首页 文章

如何使用Qt 5.6在高dpi上获得清晰的UI?

提问于
浏览
19

我正在开发一台4k显示器,它很痛苦......

最后我设法 Build 了QtDesigner,然后发现了这个问题:

当您使用 QT_AUTO_SCREEN_SCALE_FACTOR=1 并使用radiobutton和其他基本小部件编译应用程序时,它看起来在4k屏幕上缩放 . 否则控件的尺寸是正确的,正如预期的那样,它只是不锐利,而是像素化 .

我使用Qt 5.6 RC msvc2015 64bit在4k屏幕上运行Windows 10 Home 64bit,使用200%DPI变焦,并尝试使用相同的结果

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

dcreenshot

如果我使用

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);

控件很清晰,文字大小正常但是所有尺寸都要小得多 .

如何在高DPI屏幕上进行控制?

2 回答

  • 3

    正如Qt文档所说:

    Use QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
    QT_SCREEN_SCALE_FACTORS to set per-screen factors.
    QT_SCALE_FACTOR to set the application global scale factor.
    

    您可以尝试做Qt Creator正在做的事情:

    static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO";
    if (!qEnvironmentVariableIsSet(ENV_VAR_QT_DEVICE_PIXEL_RATIO)
            && !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR")
            && !qEnvironmentVariableIsSet("QT_SCALE_FACTOR")
            && !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) {
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    }
    

    最重要的是最后一行 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); .

  • 1

    使用QT_AUTO_SCREEN_SCALE_FACTOR时,字体的磅值不会改变,它们只是从原始像素放大,因此它们永远不会平滑,只会更加颠簸 .

    参考:http://doc.qt.io/qt-5.6/highdpi.html#high-dpi-support-in-qt "This will not change the size of point sized fonts"

    您需要使用QT_SCALE_FACTOR重新缩放您的应用,而不仅仅是重新缩放其像素 .

相关问题