记录QScreen和QDesktopWidget在不同分辨率、缩放比例下的相关数据

  1. 普通屏幕 1920 * 1080

缩放 100%:

缩放125%:

1280*800 缩放100%

2. 高清屏 最大支持尺寸3072*1920

100% 缩放:

150% 缩放:

200% 缩放:

3. 模拟分辨率:2560 * 1440,此为2k标准分辨率

100% 缩放:

150% 缩放:

200%缩放:

4. 模拟1920 * 1080 分辨率:

100% 缩放:

最后的最后是重点:

qt开启高分屏自适应的办法如下:

// 方法 1 :在 main 函数的最前面加上下面这句 5.6 版本才开始有这个函数
#if (QT_VERSION > QT_VERSION_CHECK(5,6,0))
QGuiApplication::setAttribute ( Qt::AA_EnableHighDpiScaling );
// 开启高缩放支持以后图片可能发虚还要开启下面这个属性
QCoreApplication::setAttribute ( Qt::AA_UseHighDpiPixmaps );
#endif
// 方法 2 :在可执行文件同目录下新建文件 qt.conf 填入下面内容
[ Platforms ]
WindowsArguments = dpiawareness = 0
// 下面这行用来解决 Qt DPI 下文字显示有锯齿的问题
WindowsArguments = fontengine = freetype
// 方法 3 :在 main 函数最前面设置 Qt 内部的环境变量
qputenv ( "QT_AUTO_SCREEN_SCALE_FACTOR" , "1.5" );
// 方法 4 :新版本的 Qt 比如 Qt5.14 修正了对高分屏的处理支持不是整数的缩放
qputenv ( "QT_ENABLE_HIGHDPI_SCALING" , "1" );
QGuiApplication::setHighDpiScaleFactorRoundingPolicy ( Qt::HighDpiScaleFactorR
oundingPolicy::PassThrough );
// 禁用缩放
// 测试发现 AA_Use96Dpi 属性在 Qt5.9 以上版本完全正常,以下版本比如 5.7 有部分控件在 175% 缩放不
正常比如 QTextEdit ,需要外层套个 widget 才行。
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
QApplication::setAttribute ( Qt::AA_Use96Dpi );
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5,14,0))
QGuiApplication::setHighDpiScaleFactorRoundingPolicy ( Qt::HighDpiScaleFactor
RoundingPolicy::Floor );
#endif

注意注意:开启高分屏自适应后,再使用QScreen获取到的屏幕分辨率、物理像素比例等均会发生改变,一般情况下qt软件开启自适应即可,目前发现在OpenGL等绘制三维场景内容中的文字大小需要手动控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值