Qt High DPI解决方案

1.不完美的方案

  • 使用Qt:AA_EnableHighDpiScaling。100%和125%程序没缩放,150%程序会变大两倍,不符合预期。
  • 使用PROCESS_DPI_UNAWARE。程序确实按照DPI缩放了,但是画面变模糊了。

2.完美的方案

一个完美的方案,必须是程序的尺寸能和DPI对应上,而且画面不模糊。

2.1 注意点

如果你的程序是结合OpenGL程序的,你需要小心,如果OpenGL是在Qt程序里面写的话,可能不会有太大的问题,但是如果OpenGL功能是由别人提供的,像自己封装成一个库,那么意味着你可能需要在一些方面要乘以那个缩放倍数,才能得到正确的OpenGL窗体大小和显示位置。多做一些测试来验证下是否存在这样的问题。

2.2 方案一

将你的Qt版本升级到Qt 6.3以上, Qt 6对于DPI有了很好的改善,如果是windows平台,你不需要做额外的动作,要做的就是看项目在Qt 6能不能成功编译。如果无法改变Qt版本,或者使用Qt 6编译不过,可以尝试下面的方法。

2.3 方案二

这个方案是针对windows的,当然Linux和Mac也是一样的思路,本质就是要得到缩放的倍数,然后设置环境变量。支持的版本应该是>= Qt 5.6,如果我没记错的话,支持QT_SCALE_FACTOR就行。

  • step1:计算缩放倍数。
  • step2:使用QT_SCALE_FACTOR,设置这个环境变量,程序会根据设置的值放大或缩小,可以是小数。
#include "mainwindow.h"
#include <windows.h>
#include <QApplication>
#include <QDebug>
#include <QScreen>
#include <WinUser.h>
#
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值