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…...
Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案
Beyond Compare 5密钥生成技术深度解密:从RSA加密到完整激活解决方案 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件开发与系统维护领域,Beyond Compare 5作为文件…...
从‘调参苦手’到‘一击即中’:实战解读glmnet中lambda.min与lambda.1se到底怎么选
从‘调参苦手’到‘一击即中’:实战解读glmnet中lambda.min与lambda.1se到底怎么选 在机器学习的世界里,LASSO回归就像一位精明的裁缝,能够为数据量身定制最合身的模型。而glmnet包中的lambda.min和lambda.1se,则是这位裁缝手中的…...
Gofile下载器深度解析:Python自动化文件获取架构设计与性能优化
Gofile下载器深度解析:Python自动化文件获取架构设计与性能优化 【免费下载链接】gofile-downloader Download files from https://gofile.io 项目地址: https://gitcode.com/gh_mirrors/go/gofile-downloader Gofile下载器是一个基于Python的高效自动化文件…...
Windows驱动管理神器:Driver Store Explorer完整使用教程与系统优化指南
Windows驱动管理神器:Driver Store Explorer完整使用教程与系统优化指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾经因为Windows系统驱动问题而烦恼ÿ…...
机器学习生存分析实战:从XGBoost-AFT到临床预测模型构建
1. 项目概述:当机器学习遇上生存分析在肿瘤临床研究和患者管理中,一个核心且充满挑战的问题是:如何准确预测患者的生存时间?传统方法,比如经典的Cox比例风险模型,为我们提供了坚实的统计学基础,…...
机器学习可持续性实践指南:从模型优化到绿色AI的工程落地
1. 项目概述:当机器学习遇见可持续性 在过去的十年里,我亲眼见证了机器学习从实验室的“黑科技”演变为驱动各行各业的核心引擎。从推荐系统到自动驾驶,模型的复杂度和规模呈指数级增长,随之而来的是一个我们无法回避的现实&#…...
vi与vim在openEuler中的差异及应用
openEuler两代系统命令差异与原理对比 1. 核心命令体系差异对比 对比维度传统Linux/早期openEuler (Vi模式)现代openEuler (Vim增强模式)核心编辑器vi (Visual Interface) 基础版vim (Vi IMproved) 增强版安装方式通常预装或通过yum install vi需手动安装yum install vim或dn…...
仿真数据与真实数据:机器人训练的数据策略选择
仿真数据与真实数据:机器人训练的数据策略选择摘要:仿真数据和真实数据各有优劣,如何选择和配比直接影响训练效果和项目成本。本文从数据特性、适用场景、配比策略三个维度给出系统分析,并提供Sim-to-Real迁移的工程化方案。关键词…...
Von Neumann内存映射检测与MON51调试实践
1. 理解Von Neumann内存映射的基础概念在嵌入式系统开发中,内存架构的选择直接影响着程序的执行效率和硬件设计。Von Neumann架构与哈佛架构是两种最基本的内存组织方式,而MON51调试器需要明确识别目标硬件的内存映射方式才能正常工作。Von Neumann架构的…...
MacBook锁屏别慌!手把手教你用恢复模式+Apple ID重置开机密码(保姆级图文)
MacBook锁屏急救指南:3种安全解锁方案详解刚泡好的咖啡还在冒热气,手指悬在键盘上方却突然僵住——那个每天输入几十次的密码,此刻竟怎么也想不起来了。MacBook屏幕上冰冷的"密码错误"提示像一堵墙,将你与所有工作资料、…...
