क्यूटी क्विक बनाम क्यूटी विजेट [बंद]


81

मैं Qt के लिए नया हूँ और Qt क्विक प्रोजेक्ट और Qt विजेट प्रोजेक्ट के बीच के अंतर को काफी नहीं समझता।

मैं एक ऐसा प्रोग्राम बनाने की उम्मीद कर रहा हूं जो हेक्सागोन्स के एक जाली को खींचता है जिसे उपयोगकर्ता घुमा सकता है और कतरनी कर सकता है, साथ ही साथ चारों ओर पैन कर सकता है और अंदर और बाहर ज़ूम कर सकता है। यह अंततः मिडी नियंत्रक होगा। किस प्रकार का प्रोजेक्ट इसके लिए बेहतर होगा, और क्यों?

मैं इसके लिए डेस्कटॉप और मोबाइल प्लेटफॉर्म दोनों पर काम करने की उम्मीद कर रहा हूं।


3
क्यूटी क्विक वेबसाइट पर थोड़ा समय बिताएं और उदाहरणों के आसपास देखें। यदि आपको इसकी आवश्यकता है, तो इसका उपयोग करें। यदि नहीं, तो सामान्य Qt विजेट प्रोजेक्ट के लिए मिला, लेकिन मोबाइल प्लेटफ़ॉर्म संभवतः एक मुद्दा होगा।
Mat

मैट की टिप्पणी के लिए अद्यतित लिंक doc.qt.io/qt-5/qtquick-index.html
Ayxan Haqverdili

जवाबों:


39

नोट: Qt विजेट्स QML विजेट्स से बदल दिए गए हैं; यह उत्तर पूछे गए प्रश्न का उत्तर देता है, जो अब पुराने क्यूटी विजेट के बारे में एक ऐतिहासिक प्रश्न है।

क्यूटी क्विक एक घोषणात्मक, स्मार्टफोन शैली उपयोगकर्ता इंटरफ़ेस है जिसमें बहुत सारे शांत एनीमेशन संक्रमणों के लिए समर्थन है जो स्मार्टफोन एप्लिकेशन में आम हैं। तेजी से एक प्रोटोटाइप विकसित करने के लिए क्विक भी एक अच्छा विकल्प है। Qt विजेट पारंपरिक डेस्कटॉप-उन्मुख UI मॉडल है।

अभी (प्री-क्यूटी 5), डेस्कटॉप सिस्टम फीचर्स के लिए क्यूटी क्विक सपोर्ट की कमी (लेकिन सुधार) है। त्वरित में मेनू, टूलबार, संवाद और अन्य मानक डेस्कटॉप व्यवहार के लिए उतना समर्थन नहीं है, जबकि विजेट उन तत्वों का बहुत अच्छा समर्थन करता है।

क्या आप चाहते हैं कि आपका ऐप डेस्कटॉप और टैबलेट प्लेटफ़ॉर्म पर देशी दिखे और महसूस करे, या क्या आप अपने स्वयं के कस्टम UI विजेट के आसपास एक साधारण एप्लिकेशन बना रहे हैं? जैसा कि मैट ने कहा है, अगर Qt क्विक आपके इच्छित फीचर्स का समर्थन करता है, तो संभवतः यह आपका सबसे तेज़ तरीका होगा। यदि आप पूर्ण विशेषताओं वाले डेस्कटॉप संस्करण बनाना चाहते हैं, तो Qt Widget शायद आपका सबसे अच्छा दांव है।


1
मुझे दोनों पसंद हैं। :) अब के लिए क्यूटी विजेट का उपयोग करना।
एंथनी

10
इस उत्तर को या तो हटा दिया जाना चाहिए, संपादित या डाउनवोट कर दिया जाना चाहिए क्योंकि हम अब क्यूटी 5.0 में पोस्ट कर रहे हैं, हम 6.0 से भी संपर्क कर रहे हैं और क्यूएम विजेट क्यूएमएल विजेट से अलग कर दिए गए हैं।
एरियल एम।

15
क्यूएमएल क्यूटी विजेट्स के लिए एक प्रतिस्थापन नहीं है, यहां तक ​​कि अब 2019 में भी, कम से कम जब तक यह क्यूडब्ल्यूटी, क्यूसीमोटप्लॉट जैसी परियोजनाओं की जगह नहीं लेता है और ऐसा लगता है कि दूसरों का झुंड नहीं है। जब तक यह सिर्फ कार्यान्वयन का एक और तरीका है, कोई कम नहीं।
एंड्री

1
@ एरियल एम। क्यूटी विजेट्स को अधिगृहीत नहीं किया जा सकता है और न ही किया जा सकता है, कम से कम तब तक जब तक कि सब कुछ फिर से लिखा नहीं जाता है, जो कि मामला नहीं है।
एंड्री

1
Qwt और QCustomPlot तीसरे पक्ष की परियोजनाएं हैं, और QtWidgets का हिस्सा नहीं है, इसलिए यह अप्रासंगिक है यदि वे पोर्ट नहीं हैं या नहीं हैं। इसके अलावा, एंथनी एक नौसिखिया है और एक MIDI नियंत्रक बनाने के बारे में पूछ रहा था जहां एक भारी अनुकूलित UI की आवश्यकता होगी (एरिना, लेमुर पीएस एलिमेंट्स और इसी तरह के सॉफ़्टवेयर देखें)। QML जाने का रास्ता है।
एरियल एम।

37

जैसा कि कोई व्यक्ति जो पेशेवर रूप से क्यूटी एप्लिकेशन विकसित करता है, मैं किसी भी दिन विजेट पर क्यूएमएल चुनूंगा।

विजेट बहुत बुनियादी सामान के लिए अच्छे हैं, लेकिन मुझे एक बार आपको कुछ ऐसा बनाने की ज़रूरत है जो थोड़ा अधिक फैंसी है, विगेट्स बहुत जल्द कम हो जाएंगे।

Qml केवल अधिक लचीला तरीका है, आप जहां भी चाहें विजेट्स के सीमित लेआउट सिस्टम का उपयोग करने के बजाय आइटम को लंगर कर सकते हैं। लगभग कोई प्लेटफ़ॉर्म-निर्भरता दोष नहीं हैं, जबकि विजेट इनमें से भरे हुए हैं। और प्रॉपर्टी बाइंडिंग सिस्टम आपके यूआई को आपके मॉडल के साथ तालमेल रखने में आसान बनाता है।


3
धन्यवाद! मैंने केवल QML / QtQuick से शुरू करने का फैसला किया है, जो आपके उत्तर में बताई गई पेशेवर पृष्ठभूमि पर आधारित है। बस एहसास है कि मैं आसानी से QtCreator से * .ui.qml का उपयोग कर सकता हूं और सीधे PyQt में उपयोग कर सकता हूं। पायथन + QtQuick के मेरे प्रारंभिक सेटअप को हल किया!
स्वदेव

2
जटिल डेस्कटॉप कार्यक्रमों के लिए QtQuick का उपयोग करना प्रदर्शन में बुरा विचार है ...
Yousha Aleayoub

शायद आप लेआउट एपीआई के साथ पर्याप्त रूप से अनुभवी नहीं हैं? QML के साथ आप क्या कर सकते हैं इसका कोई भी उदाहरण जो आप विजेट के साथ नहीं कर सकते हैं। मैं 5 वर्षों से अधिक समय से दुनिया भर में 10K उपयोगकर्ताओं के साथ एप्लिकेशन पर Qt के साथ काम कर रहा हूं और हम विजेट का उपयोग करते हैं क्योंकि केवल वे असीमित शक्ति प्रदान करते हैं। QML प्रोटोटाइप और छोटी परियोजनाओं के लिए अच्छा है। और हां, प्रदर्शन मायने रखता है। इसके अलावा, क्यूएमएल ओपनगैल संचालित होने के बाद से, यह एक शो स्टॉपर है यदि आपका उपयोगकर्ताबेस पुराने हार्डवेयर से भरा है।
दालम्बर

37

नोट : इस उत्तर में, "क्यूटी विजेट" एक क्यूटी विजेट एप्लिकेशन को संदर्भित करता है, एक नया क्यूटी एप्लिकेशन बनाते समय चयन करने योग्य।

यह प्रश्न पहली बार पोस्ट किए जाने के सात साल बाद का है ... लेकिन यहां मेरा " उद्देश्य " तब से किसी भी घटनाक्रम को बेअसर करने के लिए दो सेंट है।

एक रिफ्रेशर

भाषा: हिन्दी

Qt क्विक प्रोजेक्ट्स QML और जावास्क्रिप्ट का उपयोग करते हैं ।

Qt विजेट प्रोजेक्ट C ++ कोड का उपयोग करते हैं। (PyQt और PySide, Qt के लिए पायथन बाइंडिंग, Python का उपयोग करता है।)

प्रदर्शन और कोडिंग

जैसे, क्यूटी क्विक की तुलना में क्यूटी विजेट को निम्न-स्तर माना जा सकता है। लेकिन इसका मतलब है कि लंबे समय में, एक क्यूटी विजेट परियोजना तेजी से चलेगी और बेहतर प्रदर्शन होगा। निम्न-स्तर होना अच्छा हो सकता है, क्योंकि Qt विजेट मूल API ( QtCore मॉड्यूल , Qt स्टाइल शीट्स इत्यादि) से अधिक उजागर होता है । उस ने कहा, यह अक्सर डेस्कटॉप विकास के लिए उपयोग किया जाता है।

Qt त्वरित मोबाइल विकास को अधिक पूरा करता है (हालाँकि इसे अभी भी डेस्कटॉप विकास में उपयोग किया जा सकता है)। यह करने के लिए तैयार उपयोग है पॉपअप , एनिमेशन , टैब और लेआउट, flickables , दराज , और हमेशा की तरह नियंत्रण; मोबाइल के विकास में सभी सर्वव्यापी।

यूआई डिजाइन

दोनों में ऐसी uiफाइलें हैं जो QtDesigner के साथ काम करती हैं, लेआउट्स सेट करने और इंटरफेस बनाने के लिए एक उच्च-स्तरीय दृश्य प्रदान करती हैं। (क्यूटी क्विक में, एक्सटेंशन हैं .ui.qml। क्यूटी विजेट्स में, वे हैं .ui।) .uiफाइलें अनिवार्य नहीं हैं और न ही आवश्यक हैं: आपके पास प्रोग्राम का उपयोग करने का विकल्प और लेआउट प्रोग्राम हैं जो QML / JS या C ++ / Python का उपयोग करते हैं।

सीख रहा हूँ

यदि आप प्रोग्रामिंग में पूरी तरह से नए हैं, तो मेरा सुझाव है कि पहले क्यूटी क्विक पर एक नज़र डालें। व्यक्तिगत रूप से, मुझे लगता है कि क्यूटी क्विक में एक जेंटलर लर्निंग कर्व है और परियोजनाओं के असंख्य को पूरा करने के लिए काम करना आसान है। इसे एक कारण के लिए "क्यूटी क्विक " कहा जाता है । (क्यूटी विजेट पर मत देखो, हालांकि, उनके पास कुछ अच्छे मॉड्यूल हैं जो QtQuick से आगे हैं।)

हालांकि, अगर आप पहले सी ++ या अजगर के साथ प्रोग्रामिंग किया गया है, मैं पहले क्यूटी विजेट पर एक नज़र लेने के सुझाव है, उनके लिए इस्तेमाल किया पाने के लिए संकेतों और स्लॉट तंत्र और मॉड्यूल है कि आप (जैसे रुचि हो सकती है sql, network, gui) डिजाइन प्रोग्रामिंग के साथ (जैसे मॉडल / डेटा प्रदर्शित करने के लिए प्रोग्रामिंग देखें )।

विशेष रूप से सी ++ के साथ, अधिकांश गैर-क्यूटी पुस्तकालय जो कि घटना-हैंडलिंग उपयोग- whileलूप करते हैं, यह क्यूटी के साथ ऐसा नहीं है। वे सिग्नल और स्लॉट का उपयोग करते हैं

अंत में, भले ही आप मुख्य रूप से क्यूटी विजेट का उपयोग कर रहे हों, आप क्यूटी क्विक को देखना चाह सकते हैं क्योंकि यह काम करने के लिए एक उच्च-स्तरीय घोषणात्मक भाषा प्रदान करता है और आपको चीजों को अधिक तेज़ी से सेट करने की अनुमति देता है। (विशेषकर मोबाइल विकास के लिए।)

Qt एक फोरम के साथ Qt क्विक और Qt विजेट दोनों परियोजनाओं के लिए बहुतायत में उदाहरण प्रदान करता है । आपको लंबे समय में मदद पाने के बारे में चिंता नहीं करनी चाहिए। (StackOverflow मत भूलना!)

क्यूटी क्विक + क्यूटी विजेट

अब तक हम उनके साथ अलग-अलग संस्थाओं की तरह व्यवहार कर रहे हैं। लेकिन QML को C ++ में एकीकृत करना संभव है । यह आपको क्यूटी विजेट, सी ++, और अन्य मॉड्यूल का लाभ उठाने की अनुमति देता है। उदाहरण के लिए, QtQuick एक प्रदान करता है, TreeViewलेकिन नहीं TreeModel, जो C ++ से QML में पंजीकृत होना चाहिए। अक्सर चिंता की पिच का अलगाव होता है , जहां Qt क्रमशः UI और तर्क में प्रोग्राम को QML और C ++ में अलग करने की सलाह देता है।

यह भी काम में आता है, अगर कहें, तो आपको तीव्र एसक्यूएल प्रश्नों, एल्गोरिदम या अतुल्यकालिक http / xml अनुरोधों के लिए बैकएंड की आवश्यकता है । कि शांत नहीं है? QML / JS फ्रंटएंड प्लस C ++ बैकएंड। फुलस्टैक Qt'er। :-)

(क्या मैंने कोशिश नहीं की है, एक पायथन बैकएंड है। मैंने अभी तक PyQt को नहीं छुआ है ...)


7

QML के लिए क्विक डिफॉल्ट, इनलाइन ECMAscript सक्षम के साथ JSON घोषणात्मक बोली। क्यूटी विगेट्स के साथ, स्टाइलशीट डिजाइनर द्वारा बनाया जा सकता है, और डेवलपर देशी सी ++ कोडिंग करता है।

QML रन-टाइम पर संसाधित किया जाता है। ढांचे के भीतर सब कुछ एक साथ चल सकता है, मतभेद सिर्फ सॉफ्टवेयर आर्किटेक्ट के निर्णय लेने में लचीलापन जोड़ते हैं।


5

सबसे पहले, मुझे लगता है कि आपको विजेट के साथ शुरू करना चाहिए। विजेट यूआई आसानी से क्यूटी को सीखने में मदद करता है यदि आपके पिछले अभियान सामने के अंत की चीजों के बारे में हैं जो आप त्वरित रूप से आसानी से सीखेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.