2016-03-01 9 views
19

मैं एक 4k पर नजर रखने और इसकी एक दर्द पर विकसित कर रहा हूँ ...क्यूटी 5.6 के साथ उच्च डीपीआई पर तेज यूआई कैसे प्राप्त करें?

अंत में मैं QtDesigner की स्थापना करने में कामयाब रहे और उसके बाद इस मुद्दे ecountered:

जब आप QT_AUTO_SCREEN_SCALE_FACTOR=1 का उपयोग करें और radiobutton और अन्य बुनियादी के साथ एप्लिकेशन का संकलन विगेट्स, यह 4k स्क्रीन पर स्केल किया गया है। अन्यथा नियंत्रण के आयाम सही हैं और अपेक्षित के रूप में, यह सिर्फ तेज नहीं है, बल्कि पिक्सलेटेड है।

मैं विंडोज पर 200% डीपीआई ज़ूम के साथ 4k स्क्रीन पर 10 घर 64 बिट चला रहा हूँ, क्यूटी 5.6 आर सी msvc2015 64 बिट का उपयोग कर और अगर मैं का उपयोग

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 

dcreenshot

का उपयोग कर एक ही परिणाम प्राप्त करने के साथ करने की कोशिश की

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling); 

नियंत्रण तेज हैं, टेक्स्ट आकार ठीक है लेकिन सभी आयाम बहुत छोटे हैं।

मैं उच्च डीपीआई स्क्रीन पर नियंत्रण कैसे तेज कर सकता हूं?

+1

मैं या तो विजेट के लिए स्टाइलशीट के साथ करता हूं: http://stackoverflow.com/questions/34407001/qt-and-high-dpi-screens/34408516#34408516 या मैं QML UI का उपयोग करता हूं। – AlexanderVX

+1

मैंने आपके उत्तर को पहले पढ़ा था, लेकिन यह मुझे देशी उच्च डीपीआई समर्थन के रूप में नहीं लगता है, जिसके बारे में सभी ने बात की थी। आईडी यह स्वचालित होने की उम्मीद करता है, नियंत्रण पिक्सेललेट क्यों हैं और तेजी से प्रस्तुत नहीं किए जाते हैं? यदि यह मानक व्यवहार है, तो सभी आधिकारिक स्रोतों द्वारा इसकी सिफारिश कैसे की जा सकती है? –

+0

काफी बड़े कोड बेस होने के कारण हम क्यूटी 5.6 पर स्विच करने के लिए भाग नहीं लेते हैं और 5.5 स्थिर पर्याप्त मानते हैं और आप मूल रूप से यह पता लगाते हैं कि एए_एनेबल हाइडीपीआई स्केलिंग मोड कितना लाभ प्राप्त कर सकता है। यदि आपने क्यूएमएल का इस्तेमाल किया जो बहुत अलग लेकिन तेज होगा। तब माइंड स्केल क्यूएमएल आयताकार विशेषता। 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 उपयोग करने के लिए आपकी ऐप्लिकेशन rescale करने, बस इसके पिक्सल rescale नहीं की जरूरत है "इस बिंदु आकार फोंट का आकार परिवर्तन नहीं होगा"।

0

क्यूटी प्रलेखन कहते हैं:

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. 

आप क्या क्यूटी निर्माता क्या कर रहा है की कोशिश कर सकते हैं:

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); है।

संबंधित मुद्दे