在Windows 10中不正确地缩放Qt桌面应用程序

时间:2016-03-05 16:54:09

标签: c++ qt windows-10 qtwidgets

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

我遇到的问题是它根本没有缩放到我的表面笔的屏幕上:

enter image description here

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

来自Qt的

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

确保桌面非qml Qt应用程序在高DPI监视器上正确扩展的最佳方法是什么,特别是在Windows 10中?

1 个答案:

答案 0 :(得分:11)

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

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

  1. 设置环境变量
  2. 在程序源代码中设置属性
  3. 在系统环境变量中设置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();
    }