10

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

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

在此处输入图像描述

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

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

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

4

1 回答 1

14

Qt 最近在这里发布了一篇关于此问题的博文。

从 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();
}
于 2016-03-17T10:35:52.040 回答