- 普通屏幕 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等绘制三维场景内容中的文字大小需要手动控制。