Qt 界面上字体自适应控件大小 - 随控件缩放
Qt 界面上字体自适应控件大小 - 随控件缩放
- 引言
- 一、设计思路
- 二、进阶版大致思路
- 三、参考链接
引言

Qt控件自适应字体大小可以用adjustSize()函数,但字体自适应控件大小并没有现成的函数可调. - 本文实现了按钮上的字体随按钮大小变化而变化 (如上图所示) - 其他控件同理。
- 核心思路:
根据控件的大小变化,同步调整字体的大小- 重写resizeEvent函数
一、设计思路
本意是字体随按钮变化,实际上实现的是字体随窗体变化,由于按钮也随窗体变化,可以说是近似等价的实现 - 想变成随按钮变化也简单,将窗体高和宽换成按钮的即可:
-
- 在头文件声明高、宽和字体大小,并在构造函数中初始化 (
记录,以便后续对比)
- 在头文件声明高、宽和字体大小,并在构造函数中初始化 (
this->width = this->size().width();this->height = this->size().height();this->fontsize = ui->pushButton->font().pointSize();
-
- 在窗体
resizeEvent函数中,对比窗体高和宽的变化率,按照最小的变化率 (保证字体显示完整) 来控制字体大小。
- 在窗体
void Widget::resizeEvent(QResizeEvent *event)
{int w = event->size().width();int h = event->size().height();double scale = 1.0;scale = 1.0 * w/this->width;if(scale < 1.0 * h/this->height){scale = 1.0 * h/this->height;}QFont font = ui->pushButton->font();int new_fontsize = scale * this->fontsize;if(new_fontsize != ui->pushButton->font().pointSize()){font.setPointSize(new_fontsize);ui->pushButton->setFont(font);qDebug()<< this->fontsize << " " << new_fontsize;}
}
二、进阶版大致思路
-
- 继承现有控件,重写每一个控件的
resizeEvent函数,实现字体大小变换
各个控件需保存自己的原始的大小和字体大小信息,根据原始信息和resize后的信息调整字体。 – 略繁琐,通用性较差
- 继承现有控件,重写每一个控件的
-
- 写一个函数或类 (
推荐类,方便存储原始数据),遍历界面上的控件 (或将需要调整字体的控件提前加入类中的一个list中,在父窗体上resizeEvent函数中遍历list,调整其中控件字体大小即可)。-- 通用性强,较难实现
- 写一个函数或类 (
已经有大佬写了工具:QT界面自适应:https://blog.csdn.net/qq_45280097/article/details/134738567
三、参考链接
Qt 控件自适应字体大小:https://blog.csdn.net/lxj362343/article/details/108245226
Qt学习之路——字体跟随控件自适应(笔记):https://blog.csdn.net/qq_39020917/article/details/131911691
Qt Windows高清DPI自适应分辨率缩放,比较完美的解决方案:https://blog.csdn.net/startl/article/details/105862817
相关文章:
Qt 界面上字体自适应控件大小 - 随控件缩放
Qt 界面上字体自适应控件大小 - 随控件缩放 引言一、设计思路二、进阶版大致思路三、参考链接 引言 Qt控件自适应字体大小可以用adjustSize()函数,但字体自适应控件大小并没有现成的函数可调. - 本文实现了按钮上的字体随按钮大小变化而变化 (如上图所示) - 其他控件…...
【Python】 使用SMOTE解决数据不平衡问题
原谅把你带走的雨天 在渐渐模糊的窗前 每个人最后都要说再见 原谅被你带走的永远 微笑着容易过一天 也许是我已经 老了一点 那些日子你会不会舍不得 思念就像关不紧的门 空气里有幸福的灰尘 否则为何闭上眼睛的时候 又全都想起了 谁都别说 让我一个人躲一躲 你的承诺 我竟然没怀…...
Redis第18讲——Redis和Redission实现延迟消息
即使不是做电商业务的同学,也一定知道订单超时关闭这种业务场景,这个场景大致就是用户下单后,如果在一定时间内未支付(比如15分钟、半小时),那么系统就会把这笔订单给关闭掉。这个功能实现的方式有很多种&a…...
返回枚举类给前端
1. 前言 在实际开发过程中,前端的下拉框或者单选按钮的内容通常的需要和后端匹配的,故一般会由后端将下拉框的内容或单选框的内容传给前端,而这些内容在后端一般是由枚举类存储的,如果后端直接返回枚举类,返回结果将会…...
A. Maximize?
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given an integer x𝑥. Your task is to find any integer y𝑦 (1≤y<x)(1≤𝑦<𝑥) su…...
RBAC 动态权限
文章目录 前言一、RBAC(Role-Based Access Control,基于角色的访问控制)二、Java实现RBAC 权限的大概思路1. 添加依赖2. 配置MyBatis-Plus和数据源1. 添加依赖2. 实体类与Mapper接口UserMapper.java 3. 配置MyBatis-Plus4. 自定义UserDetails…...
c语言:模拟strlen(三种方法)最全版本
1.计数的方法 #include <stdio.h> #include <assert.h> int my_strlen(const char * str)//const的使用优化 {int count0;assert(str)while(*str){count;str;}return count; } 2.用指针的方法(指针-指针) #include <stdio.h> #incl…...
线性模型--普通最小二乘法
线性模型 一、模型介绍二、用于回归的线性模型2.1 线性回归(普通最小二乘法) 一、模型介绍 线性模型是在实践中广泛使用的一类模型,该模型利用输入特征的线性函数进行预测。 二、用于回归的线性模型 以下代码可以在一维wave数据集上学习参…...
移动云以深度融合之服务,令“大”智慧贯穿云端
移动云助力大模型,开拓创新领未来。 云计算——AI模型的推动器。 当前人工智能技术发展的现状和趋势,以及中国在人工智能领域的发展策略和成就。确实,以 ChatGPT 为代表的大型语言模型在自然语言处理、文本生成、对话系统等领域取得了显著的…...
簡述vue常用指令
Vue.js 提供了许多内置指令,这些指令用于在模板中添加特殊功能。以下是一些 Vue 的常用内置指令的简要说明: v-text: 更新元素的 textContent。示例:<span v-text"message"></span> v-html: 更…...
【建议收藏】用AI快速生成一个网页(名侦探柯南~灰原哀主题网页),适合大学生web期末大作业
下面是提供给AI的提示词和AI给出的代码以及成果展示 1、生成一个网页导航栏,宽度为1300px,高度为60px。导航区域在导航栏最右侧不超出导航栏,高60px,宽度500px,里面是5个导航菜单项横向排列,每个宽度100px&…...
用c++用4个凸函数(觉得啥好用用啥)去测试adam,rmsprop,adagrad算法的性能(谁先找到最优点)
为了测试 Adam、RMSProp 和 Adagrad 算法的性能,你可以使用四个凸函数进行实验。以下是一些常用的凸函数示例: Rosenbrock 函数: Booth 函数: Himmelblau 函数: Beale 函数: 你可以选择其中一个或多…...
AJAX初级
AJAX的概念: 使用浏览器的 XMLHttpRequest 对象 与服务器通信 浏览器网页中,使用 AJAX技术(XHR对象)发起获取省份列表数据的请求,服务器代码响应准备好的省份列表数据给前端,前端拿到数据数组以后…...
重载大于号运算符,比较复数大小
本题目要求编写代码的功能为: 输入两个复数(变量名自拟),比较复数模的大小,复数实部与虚部都是整数 要求输入时输入4个整数,分别代表复数1的实部、虚部,复数2的实部虚部 输入格式: 在同一行中输…...
go ast语义分析实现指标计算器
什么是AST 首先我们要知道AST是什么(Abstract Syntax Tree,AST),简称为语法树,是go语言源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。 …...
【Vue】组件间传参与方法调用
【前言】 … 【目标】 1 了解组件间传参 2 组件间自定义事件绑定与解绑 3 组件的事件总线 4 消息订阅与发布 一 组件间传参 1 props 引入并使用组件:传递参数 <template><div id="app"><HelloWorld :msg="msg" :name="name" …...
类和对象2
三、C对象模型和this指针 3.1 成员变量和成员函数分开存储 在C中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <string.h> using namespace …...
Linux系统命令traceroute详解(语法、选项、原理和实例)
目录 一、traceroute概述 二、语法 1、基本语法 2、命令选项 三、帮助信息 四、示例 1. 使用默认模式(ICMP Echo)追踪到目标主机 2. 使用UDP模式(需要root权限)追踪到目标主机 3. 不解析IP地址为主机名,直接显…...
中兴通讯助力中国移动,推动SPN AI节能技术于23省规模部署
SPN作为中国移动自主创新的新一代综合承载网络,相比PTN设备,SPN的单机容量及性能有大幅提升,整机功耗也相应变大。在当前国家双碳政策的目标下,SPN设备的节能降耗也日益成为中国移动关注的焦点。因此,中国移动选择与中…...
SQL Server--死锁
今天,客户反应打不开xxx页面了。好家伙肯定锁表了。。。。。 只能先吧死锁进程先kill掉,不能耽误客户生产环境运行。。。。。 一定要看看是那张表发生了死锁 1、查询死锁语句 select dbid,* from sys.sysprocesses where 11 and spid >50 and blo…...
你的SSH密钥可能已经过期了队
引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...
五年跨境人掏心窝:多SKU铺货,我终于不用“爆肝”了!
大家好,我是跨境小彭。时间过得真快,一转眼,入坑跨境电商已经五年了。从最早一个人一台电脑在出租屋里倒腾,到现在有了自己的小团队,这中间的辛酸泪,估计只有咱们圈内人懂。最近,后台收到不少刚…...
Python主流框架全解析
以下是 Python 常用框架的分类解析:一、Web 开发框架1. Django定位:全能型框架,内置 ORM、模板引擎、路由系统等特点:开箱即用(如自带后台管理、用户认证)遵循 MVC 设计模式(MTV 变体࿰…...
职场人AI生存指南:10个核心技能,让你不被AI淘汰反而被赋能
掌握AI工具的基础应用职场人需要熟悉主流AI工具的操作,如ChatGPT、Copilot、Notion AI等。了解这些工具的基本功能,如文本生成、数据分析、自动化流程等,能够提升工作效率。定期关注AI工具的更新,学习新功能的应用场景。培养数据思…...
Shell应用手册(一) 5 .终端连接与环境配置(SSH连接、命令行提示符含义)
对于后端开发者、运维工程师而言,终端是日常工作中最常用的工具之一。无论是远程管理服务器,还是本地调试程序,终端连接的稳定性、环境配置的合理性,直接影响工作效率。而SSH连接作为远程终端访问的核心方式,命令行提示…...
一文读懂 JWT 无状态身份认证的核心原理
JWT 是目前前后端分离、微服务架构中最常用的无状态身份认证方案。本文用简洁易懂的方式,带你快速掌握 JWT 的签发、传递与校验核心逻辑,轻松理解其工作原理与安全机制。 一、什么是JWT? JWT(JSON Web Token)是一种轻…...
filezilla求助
求助各位,filezilla一直这样连接不上,之前是连接成功之后就超时,按网上说的关了防火墙,把设置改为主动,然后禁用超时,就一直这样了,我们老师的源代码和交作业都要用ftp,真没办法了...
英语地点介词(in/on/at)的使用
一、核心原则介词核心逻辑就像……at一个具体的坐标点地图上的图钉 📍on一个表面/平面/线贴在墙上的一张纸 📄in一个有边界的立体空间装在盒子里的玩具 📦记忆口诀: at 是点,on 是面,in 是空间里面。二、具…...
ARDUINO编码器反馈电机初步代码
使用的是UNO R3和某淘宝店铺的霍尔编码器电机//输入捕获可用PIN2 //输出PWM可以为任意位置(所用为13) //尝试过直接模拟值输入检测 但是不知道为何总是一样的值 //计划在一个周期扫描高电平unsigned long pwm1_start10,pwm1_start20,t0; int gain11000,gain23000,cnth0,cntl0; …...
Python IDE 横向对比:VSCode、Spyder、PyCharm 与 Jupyter Notebook 的实战选择指南
1. 为什么Python开发者需要纠结IDE选择? 刚入门Python时,我也觉得用记事本写代码没什么问题。直到第一次尝试调试一个爬虫脚本,在密密麻麻的打印语句中找bug时,才意识到好工具的重要性。Python作为多范式语言,从数据清…...
