QT_AUTO_SCREEN_SCALE_FACTOR没有效果

11

我的软件可在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"),但这绝对不是我想要的。

如何让我的软件的缩放随之调整呢?

感谢您的时间!

编辑:

这是我的错误链接


QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 这段代码也没有效果。 - mrg95
我还想指出,我的GUI大约一半是使用Qt Designer创建的,另一半是编码完成的。它们的行为都相同。(我猜我本来期望Qt Designer创建的元素也能够缩放,但事实并非如此) - mrg95
好的,需要注意的一点是,我在另一台设备上尝试了一下(Windows 10联想Flex 5),该设备默认的dpi更高。结果发现它确实自动缩放了,但是它将其缩放了2倍,而不是设备设置的1.5倍。结果是文本变大了1.5倍,但其他所有内容都增加了2倍。看起来只接受整数。我不确定接下来该怎么做... - mrg95
无论如何也帮不了我。我的软件已经发布在5.8上了。通过更多的测试,它明确地四舍五入到最接近的整数。1.25变成1,1.5变成2,1.75变成2等等。 - mrg95
Qt 5.10仍然没有这个选项。这个错误报告也很有趣:https://bugreports.qt.io/browse/QTCREATORBUG-16293 - matthieu
显示剩余2条评论
1个回答

2
这可能有点晚了,但希望我的回答能够有所帮助。 以下是我使用的方法。您可以在QApplication实例化时通过命令行选项手动设置DPI感知度。
官方文档在这里https://doc.qt.io/qt-5/highdpi.html(DPI感知部分)。
根据文档,您可以将应用程序设置为DPI不感知(因此它将自动缩放但显示会模糊),或者设置为系统DPI感知或单独监视器感知。
以下是一个最小示例代码,用于实例化QApplication以强制使用DPI不感知(并具有UI位图缩放)。选择0以外的其他值以正确启用高DPI:
int main() 
{
   int argc = 3;
   char*argv[] = {(char*)"Appname", (char*)"--platform", (char*)"windows:dpiawareness=0";
   (void) new QApplication(argc, argv);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接