QT_AUTO_SCREEN_SCALE_FACTOR无效

时间:2017-12-01 06:35:19

标签: 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

1 个答案:

答案 0 :(得分:0)

可能要晚一点答案,但这可能会有所帮助。

这就是为我工作的东西。 您可以通过在QApplication的实例上提供命令行选项来手动设置DPIawareness。

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

根据文档,您可以将应用程序设置为DPI Unaware(它将自动缩放,但显示将变得模糊),系统DPI Aware或每个监视器的感知。

这是用于实例化QApplication强制DPI未知(并具有UI位图缩放)的最小示例代码,选择非0的值以正确启用High DPI:

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