2016-03-01 7 views
19

... Qt 5.6 ile yüksek dpi'de keskin UI nasıl elde edilir? Bir 4k monitör ve bir ağrı geliştiriyorum

Sonunda QtDesigner kurmak başardı ve ardından bu sorunu ecountered: Eğer QT_AUTO_SCREEN_SCALE_FACTOR=1 kullanıp radiobutton ve temel diğer bir uygulama derlerken

Widget, bir 4k ekranda ölçeklenmiş görünüyor. Aksi takdirde, kontrollerin boyutları doğru ve beklendiği gibi keskin değil, piksel şeklinde.

Qt 5.6 RC msvc2015 64 bit kullanılırken,% 200 DPI zoomlu 4k ekranda Windows 10 Ev 64 bit çalışıyor ve ben kullanırsanız

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 

dcreenshot

kullanarak aynı sonuçlar elde edilmektedir çalıştı am

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling); 

denetimler keskin, metin boyutu iyi ANCAK tüm boyutlar çok daha küçük.

Yüksek DPI ekranlarda denetimleri nasıl keskinleştiririm?

+1

Bunu, widget'lar için stil sayfası ile yapıyorum: http://stackoverflow.com/questions/34407001/qt-and-high-dpi-screens/34408516#34408516 veya QML UI kullanıyorum. – AlexanderVX

+1

Cevabınızı daha önce okudum, ancak bu, herkesin bahsettiği doğal yüksek dpi desteği olarak görünmüyor. Kimlik, bunun otomatik olmasını bekler, neden kontroller pikselleşir ve keskin bir şekilde işlenmez? Bu standart davranışsa, tüm resmi kaynaklar tarafından nasıl tavsiye edilebilir? –

+0

Oldukça büyük bir kod tabanına sahip olmak için Qt 5.6'ya geçmek için acele etmiyoruz ve 5.5'i yeterince kararlı olarak görüyoruz ve temel olarak AA_EnableHighDpiScaling modunun ne kadar avantaj sağlayabileceğini keşfettiniz. Çok farklı ama keskin olan QML kullandıysanız. Zihin ölçeği QML Dikdörtgen özniteliği daha sonra. Okumak biraz daha fazla https://doc-snapshots.qt.io/qt5-5.6/highdpi.html – AlexanderVX

cevap

0

QT_AUTO_SCREEN_SCALE_FACTOR ile, yazı tiplerinin punto büyüklüğü değiştirilmez, yalnızca orijinal piksellerinden ölçeklenirler, bu nedenle hiçbir zaman pürüzsüz olmayacak, yalnızca daha fazla serseri.

Ref: http://doc.qt.io/qt-5.6/highdpi.html#high-dpi-support-in-qt yerine sadece kendi pikselleri rescale değil, uygulamanızı yeniden ölçeklendiriniz QT_SCALE_FACTOR kullanmak gerekir

"Bu nokta büyüklüğünde yazı boyutunu değiştirmek olmaz".

0

Qt belgelerine söylediği gibi:

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. 

Sen Qt Creator ne yaptığını yapıyor deneyebilirsiniz:

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); 
} 

Temelde önemli olan son satırı QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); olduğunu.

İlgili konular