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

mic*_*vka 21 c++ qt highdpi

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

最后我设法建立了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);
Run Code Online (Sandbox Code Playgroud)

dcreenshot

如果我使用

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);
Run Code Online (Sandbox Code Playgroud)

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

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

Rib*_*oks 6

正如 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.
Run Code Online (Sandbox Code Playgroud)

你可以尝试做 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);
}
Run Code Online (Sandbox Code Playgroud)

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