2016-03-01 93 views
19

我一个4K显示器及其痛苦开发...如何用Qt 5.6在高DPI上获得锐利的UI?

最后,我设法建立QtDesigner然后ecountered这个问题:当您使用QT_AUTO_SCREEN_SCALE_FACTOR=1和编译单选按钮等基本的应用程序

小工具,它看起来在4k屏幕上缩放。 否则,控件的尺寸是正确的和正如预期的那样,它只是不够锐利,而是像素化。

我在Windows上运行以200%DPI缩放4K屏幕上10个主场64位,使用Qt 5.6 RC msvc2015 64位,并使用

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 

dcreenshot

如果我使用达到相同的结果尝试

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling); 

控件是锐利的,文字大小可以,但所有的尺寸都小得多。

如何在高DPI屏幕上对控件进行锐利处理?

+1

我可以使用样式表为窗口小部件:http://stackoverflow.com/questions/34407001/qt-and-high-dpi-screens/34408516#34408516或者我使用QML UI。 – AlexanderVX

+1

我之前读过你的回复,但这在我看来并不像每个人都在谈论的原生高分辨率支持。我希望这是自动的,为什么控件像素化,而不是锐利?如果这是标准行为,那么所有官方消息来源如何推荐? –

+0

拥有相当大的代码库,我们不急于切换到Qt 5.6并考虑5.5足够稳定,并且您基本上只是发现可以获得AA_EnableHighDpiScaling模式的优势。如果您使用的QML会非常不同但很尖锐。心智尺度QML Rectangle属性然后。多读一点https://doc-snapshots.qt.io/qt5-5.6/highdpi.html – AlexanderVX

回答

0

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

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

您需要使用QT_SCALE_FACTOR而不是重新调整你的应用程序,而不是重新调整它的像素。

0

由于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);