2016-03-01 59 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);