QT windows dpi变化导致的界面异常处理

问题:已经在UI界面中利用布局设计好界面,但是运行程序后显示的界面出现错乱,而且在做出一些修改后重新构建,运行时界面无变化。

目录

一、解决UI设计界面与运行时显示界面不一致的问题

1、导致该现象的原因有:显示屏分辨率过高

2、使用布局和设置控件sizePolicy

二、解决修改界面后重构,运行无变化的问题

一、解决UI设计界面与运行时显示界面不一致的问题
1、导致该现象的原因有:显示屏分辨率过高
例如本人就是使用的4K屏,发现一些label中的文字显示不全

解决办法:网上大多是给出在main函数的第一行中加入以下代码的方法

if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling,true);

本人在加入上述代码后,界面有了一定的改变,但是仍然不是按我设计的显示,而且不知道是误点了什么设置而自己不知道,导致做出修改后再重新构建,但运行时界面无变化。

2、使用布局和设置控件sizePolicy
各个布局组件的功能:

Vertical Layout:垂直方向布局,组件自动在垂直方向上分布。

Horizontal Layout:水平方向布局,组件自动在水平方向上布局。

Grid Layout:网格状布局,网状布局大小改变时,每个网格的大小都改变。

Form Layout:窗体布局,与网格状布局类似,但是只有最右侧的一列网格会改变大小。

Horizontal Spacer:一个用于水平分隔的空格。

Vertical Spacer:一个用于垂直分隔的空格。

要想是改变窗体大小时,界面上的各个组件自动改变大小,需要为窗体制定一个总的布局。

要想控件根据窗体进行调整,最为重要的一点就是设置窗口部件的大小策略———设置sizePolicy。

控件的sizePolicy说明控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。

Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint。

Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。

Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。

Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小

Expandint:控件可以自行增大或者缩小

sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)

如果想要界面自适应电脑分辨率大小,可以将所有组件的sizePolicy中的Horizontal Policy和Vertical Policy设置成Ignored,再进行布局。

二、解决修改界面后重构,运行无变化的问题
主要原因是生成的ui_.h没有更新,因为所有的UI控件布局都依赖所生成的Ui_.h

1、Shadow build是辅助工具,用来生成不同版本build的工具,在项目中把Shadow build的勾去掉,修改了project选项, 运行的时候是会重新Qmake一下的, 这样UI文件又更新了。

2、将Debug模式与Release模式相互切换一下

在这里插入图片描述

3、修改后运行下Qmake, 因为Qmake会自动运行Moc和Uic。

4、运行uic工具

A:uic -h:查看uic帮助

B:到项目目录下去执行:uic mainwindow.ui > ui_mainwindow.h。其中mainwindow.ui为更新的ui界面文件,mainwindow.h是程序需要用的.h文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/116455.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows安装cuda和cudnn教程最新版(2023年9月)

文章目录 cudacudnn cuda 查看电脑的cuda最高驱动版本(适用于N卡电脑-Nvidia) winR打开命令行,输入nvidia-smi 右上角cuda -version就是目前支持的最高cuda版本,目前是12.2 nvidia官网下载cuda 下载地址:https://d…

最优化方法——Matlab实现黄金分割法一维搜索

文章目录 黄金分割法一维搜索原理算法流程: Matlab代码命令行窗口结果打印:更换匿名函数: 《最优化方法》教材上写成表的答案:黄金分割法的一些性质 黄金分割法一维搜索原理 若保留区间为[x1,b],我们得到的结果是一致的. 该方法称…

深入了解队列数据结构:定义、特性和实际应用

文章目录 🍋引言🍋队列的定义🍋队列的实现🍋队列的应用🍋练习题🍋结语 🍋引言 队列(Queue)是计算机科学中一种重要的数据结构,它常用于各种应用程序中&#x…

SoftwareTest3 - 要了人命的Bug

软件测试基础篇 一 . 如何合理的创建一个 Bug二 . Bug 等级2.1 崩溃2.2 严重2.3 一般2.4 次要 三 . Bug 的生命周期四 . 跟开发产生争执应该怎么解决 Hello , 大家好 , 又给大家带来新的专栏喽 ~ 这个专栏是专门为零基础小白从 0 到 1 了解软件测试基础理论设计的 , 虽然还不足…

php之导入导出csv文件

一、导入csv文件 1、创建导入页面 <!DOCTYPE html> <html lang"zh-CN"> <meta charset"UTF-8"> <head><title>文件提交表单</title> </head> <body> <form action"test5.php" method"…

【软件测试】测试中的风险有哪些?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; ​那么到底都有哪些风险要注意呢?如何解决呢?另外这些风险如何在计划中写明呢&#xff0c;不会写“张三…

CTF 全讲解:[SWPUCTF 2021 新生赛]jicao

文章目录 参考环境题目index.phphighlight_file()include()多次调用&#xff0c;多次执行单次调用&#xff0c;单次执行 $_POST超全局变量HackBarHackBar 插件的获取 $_POST打开 HackBar 插件通过 HackBar 插件发起 POST 请求 GET 请求查询字符串超全局变量 $_GET JSONJSON 数据…

Android Studio 创建项目不自动生成BuildConfig文件

今天在AS上新建项目发现找不到BuildConfig文件&#xff0c;怎么clear都不行。通过多方面查找发现原来gradle版本不同造成的&#xff0c;Gradle 8.0默认不生成 BuildConfig 文件。 如上图&#xff0c;8.0版本是没有source文件夹 上图是低于8.0版本有source文件夹 针对这个问题&…

Unity打包出来的APK文件有问题总结

一、Unity打包出来的APK文件安装失败&#xff0c;提示安装失败&#xff08;-108&#xff09;&#xff0c;或者是提示“包含病毒&#xff1a;a.gray.Bulimia.b” 有可能是遇到如上图所示的问题&#xff0c;提示安装失败&#xff08;-108&#xff09;。 有可能是遇到如上图所示的…

基于微信小程序快递取件上门预约服务系统设计与实现(开题报告+任务书+源码+lw+ppt +部署文档+讲解)

文章目录 前言运行环境说明用户的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考论文参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌…

idea更改java项目名

做了一个普通的java项目&#xff08;使用socket进行网络通信的练手项目&#xff09;&#xff0c;需要更改项目名&#xff0c;更改过程记录在这里。 修改项目名可能会出现很多错误&#xff0c;建议先备份当前项目 1.在idea里&#xff0c;右键项目名——》选择Refactor——》选择…

java框架-Springboot3-基础特性+核心原理

文章目录 java框架-Springboot3-基础特性核心原理profiles外部化配置生命周期监听事件触发时机事件驱动开发SPISpringboot容器启动过程自定义starter java框架-Springboot3-基础特性核心原理 profiles 外部化配置 生命周期监听 事件触发时机 事件驱动开发 Component public c…