【问题标题】:QT_AUTO_SCREEN_SCALE_FACTOR has no effectQT_AUTO_SCREEN_SCALE_FACTOR 没有效果
【发布时间】:2018-05-15 05:36:05
【问题描述】:

我的软件在 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

【问题讨论】:

  • QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);也没有效果
  • 我还想指出,我的 GUI 大约有一半是用 Qt Designer 创建的,其余的都是编码的。两者的行为相同。 (我想我什至希望 Qt Designer 创建可缩放的元素,但他们没有)
  • 我最近在谷歌上搜索了这个主题,发现了很多类似的问题以及一些解决方法:我认为最值得在浏览器选项卡中打开的内容(但我只需要大约 15 分钟。再次找到它们):SO: Changing DPI scaling size of display make Qt application's font size get rendered biggerSetting Qt To Ignore Windows DPI Text Size Personalization
  • 好的,有一点需要注意,我在默认情况下 dpi 较高的不同设备(Windows 10 lenovo flex 5)上进行了尝试。事实证明它确实自动缩放它,但它按 2 而不是设备设置的 1.5 缩放它。结果是文本变大了 1.5,但其他所有内容都增加了 2。它只需要整数的样子。我不知道从这里做什么......
  • ???我在某处看到 Qt 5.10 已经发布。 (或者只是在开发中?)当他们希望尝试解决这个已知问题时,至少值得一看发行说明。

标签: c++ qt dpi


【解决方案1】:

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

这对我有用。 您可以通过在 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);
}

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 2018-05-21
    • 2018-07-28
    • 1970-01-01
    • 2011-10-01
    • 2015-05-31
    • 2020-10-19
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多