【问题标题】:improper scaling of Qt Desktop application in windows 10Windows 10 中 Qt 桌面应用程序的不当缩放
【发布时间】:2016-06-19 10:07:02
【问题描述】:

我正在为 Windows 10 编写一个简单的 Qt (Widgets) Gui 应用程序。我正在使用 Qt 的 5.6.0 beta 版本。

我遇到的问题是它根本没有缩放到我的 Surfacebook 的屏幕:

这有点难以分辨,因为 SO 会缩放图像,但请注意停靠小部件标题栏控件相对于窗口标题栏控件有多小。

来自 Qt 的This link 谈论缩放,但它主要关注 qml/qtQuick 和一般的移动应用程序,另外似乎暗示在桌面 QtWidgets 应用程序中,QPainter 将自动确定适当的缩放,它显然不是。

确保桌面、非 qml Qt 应用程序在高 DPI 显示器(尤其是 Windows 10)上正确扩展的最佳方法是什么?

【问题讨论】:

    标签: c++ qt windows-10 qtwidgets


    【解决方案1】:

    Qt 最近发布了一篇关于此问题的博文here

    从 Qt 5.6 开始启用高 DPI 支持。在 OS X 平台上,本机支持高 DPI。根据博文,在 X11/Windows/Android 上,有两种方法可以启用高 DPI 检测:

    1. 设置环境变量
    2. 在程序源代码中设置属性

    在系统环境变量中设置QT_AUTO_SCREEN_SCALE_FACTOR=1 将解决缩放问题。

    此外,在您的应用程序源代码中设置 QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 还应该允许自动高 DPI 缩放。

    注意:要使用属性方法,您必须在创建QApplication 对象之前设置属性,也就是说:

    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    
        QApplication app(argc, argv);   
        return app.exec();
    }
    

    【讨论】:

    • 我在多显示器设置上遇到问题,对我来说,QT_AUTO_SCREEN_SCALE_FACTOR=0 会产生正确的结果...感谢您为我指明正确的方向!
    • 谢谢,我遇到了 Cura 在 Win10 上无法正确缩放的问题,这解决了这个问题(重新移动已经存在的任何以前的 QT 缩放参数)
    猜你喜欢
    • 2015-04-20
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2018-10-27
    • 2014-11-29
    相关资源
    最近更新 更多