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

新手上路,请多包涵

我正在使用 4k 显示器进行开发,这很痛苦……

最后我设法设置了 QtDesigner,然后遇到了这个问题:

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

我使用 Qt 5.6 RC msvc2015 64bit 在 4k 屏幕上以 200% DPI 缩放在 Windows 10 Home 64bit 上运行,并尝试使用

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

截图

如果我使用

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);

控件很清晰,文字大小还可以,但所有尺寸都小得多。

如何在高 DPI 屏幕上使控件清晰?

原文由 michnovka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

正如 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);

原文由 Ribtoks 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 QT_AUTO_SCREEN_SCALE_FACTOR,字体的磅值不会改变,它们只是从原始像素放大,所以它们永远不会平滑,只会更加凹凸不平。

参考: http ://doc.qt.io/qt-5.6/highdpi.html#high-dpi-support-in-qt “这不会改变点大小字体的大小”

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

原文由 G Huxley 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题