让Qt程序适配高分辨率屏幕,解决软件界面错乱异常

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常

      • 一、问题
      • 二、原因
      • 三、解决方案
        • 1、更改显示器分辨率或者不使用缩放
        • 2、使用“高DIP缩放替代”
        • 3、修改软件,使之自动适配
          • a、C++代码
          • b、python代码
      • 四、总结

一、问题

前期使用Qt开发一个登录模块一直使用很好。最近在一台新电脑上使用时发现排版混乱。

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第1张图片

二、原因

这个问题很普遍,主要原因是旧软件对高清显示器的适配不当造成的。新电脑使用的是4K屏,win10系统自动进行了175%的缩放。
让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第2张图片

三、解决方案

1、更改显示器分辨率或者不使用缩放

如下图所示,将屏幕分辨修改成有类似 1920*1080p,或者将缩放与布局修改成100%。如果你不介意修改显示器的分辨率或者不介意屏幕整体变小,那么这个方案是最便捷有效的方案,而且还能做到一劳永逸,所有软件都不会出现类似问题了。

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第3张图片

2、使用“高DIP缩放替代”

如果“方案一”不适用,或者只是个别软件存在这样的问题,那么可以单独修改其兼容性设置。设置方法:右击某软件,选择“属性”-“兼容性”-“更改高DIP设置”-“高DIP替代”,勾选“替代高DIP替代行为”,然后在下面的下拉选项中选择“系统”或“系统(增强)”。

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第4张图片

3、修改软件,使之自动适配
a、C++代码

QApplication构造前设置Qt::AA_EnableHighDpiScaling属性:

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第5张图片

b、python代码

在程序入口处增加:

QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第6张图片

四、总结

由于自己是开发者,有C++原码,所以经过测试通过在main()函数中增加代码的方案解决此问题的方案最优而且运行效果非常完美。python代码未经测试,大家可以自己偿试。

让Qt程序适配高分辨率屏幕,解决软件界面错乱异常_第7张图片

你可能感兴趣的:(Qt,qt)