QT_AUTO_SCREEN_SCALE_FACTOR 没有效果

mrg*_*g95 8 c++ qt dpi

我的软件在 Windows 7 及更高版本上运行,并使用 Qt 5.8 以 100% dpi 缩放(控制面板 > 放大或缩小文本和其他项目)开发。

当我的用户将他们的 dpi 缩放比例设置为 150% 时,所有文本和布局间距都会增加,正如他们应该的那样,但其他一切都没有受到影响。

结果是一个损坏的 GUI,文本对于其他元素来说太大了。

我已经尽可能多地进行了研究,“简单的修复”是将环境变量设置QT_AUTO_SCREEN_SCALE_FACTOR为 true。

qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); 是我在 main.cpp 中作为第一行添加的内容。

完全没有任何影响。唯一有任何影响的是,qputenv("QT_SCALE_FACTOR", "1.5");这绝对不是我想要的。

我如何告诉我的其余软件进行相应的扩展?

谢谢你的时间!

编辑:

这是我的错误https://bugreports.qt.io/browse/QTBUG-55654

Pat*_*RIA 2

答案可能有点晚了,但可能会有所帮助。

这对我有用。您可以通过在 QApplication 实例化时提供命令行选项来手动设置 DPIawareness。

官方文档位于https://doc.qt.io/qt-5/highdpi.html(DPI意识部分)。

根据文档,您可以将应用程序设置为 DPI Unaware(因此它将自动缩放,但显示会模糊)、System DPI Aware 或 Per-Monitor Aware。

下面是一个最小的示例代码,用于实例化 QApplication 以强制 DPI Unaware(并具有 UI 位图缩放),选择 0 以外的其他值以正确启用高 DPI:

int main() 
{
   int argc = 3;
   char*argv[] = {(char*)"Appname", (char*)"--platform", (char*)"windows:dpiawareness=0";
   (void) new QApplication(argc, argv);
}
Run Code Online (Sandbox Code Playgroud)