Qt के खतरनाक कोने क्या हैं? [बन्द है]


10

सूरज के नीचे कुछ भी सही नहीं है। Qt कोई अपवाद नहीं है, और इसकी सीमाएँ हैं: हम GUI के अलावा किसी थ्रेड में Pixmaps का उपयोग नहीं कर सकते, हम 16-बिट-प्रति-चैनल छवि प्रारूप, आदि के साथ QImage का उपयोग नहीं कर सकते।

किन स्थितियों ने क्यूटी की सीमाओं के कारण आपको डिज़ाइन को खराब करने के लिए मजबूर किया है?
सबसे ज्यादा नफरत करने वाले क्वर्की क्या हैं?
अपनी परियोजनाओं में क्यूटी का उपयोग करते समय किन डिजाइन निर्णयों से बचना चाहिए?


आप कह सकते हैं क्यूटी? आप 'क्यू टूलकिट "करने के लिए इसे विस्तार हैं, तो आप इसके बारे में एक" "सामने जोड़ सकते हैं, लेकिन यह सही है / अच्छा अभ्यास कहने के लिए क्यूटी? बस उत्सुक।
Anto

@Anto: मुझे लगता है, यहाँ है, नहीं theकरने के लिए बाध्य है , लेकिन यह केवल मेरी सहज महसूस कर रही है, क्योंकि मैं रूसी हूँ :)cornersQt
दाखलताओं

एक संभावित खतरनाक वक्र यह है कि परियोजना वित्तीय संकट में हो सकती है। नोकिया ने हाल ही में Microsoft के साथ (अपने फोन पर Win7 का उपयोग करने के लिए) एक समझौते पर हस्ताक्षर किए हैं जो Qt के भविष्य को अस्थिर जमीन पर रखता है।
पीटर रोवेल

मुझे यह उत्तर जानने में बहुत दिलचस्पी है क्योंकि मैं सी ++ दृश्य प्रोग्रामिंग के लिए एक नॉब हूं: डी
शहीर

@ वाइन: कैसे "क्यूटी के खतरनाक कोनों?"
क्रिस

जवाबों:


12

विडंबना यह है कि मैं कहूंगा कि क्यूटी की शक्ति भी कमियों में से एक है। बहुत सारे शक्तिशाली निर्माण और विस्तार हैं, क्यूटी में आप जो कोड लिखते हैं, वह आसानी से "क्यूटी तरीके" में अत्यधिक प्रभावित हो जाता है। किसी अन्य भाषा में कार्यक्षमता निकालने की कोशिश करने का मतलब न केवल फिर से लिखना है, आपको बहुत सारी क्यूटी-विशिष्ट तकनीक जानने की आवश्यकता है।

क्यूटी की चौड़ाई का मतलब है कि प्रोग्रामर को काम पर रखने का मतलब है या तो क्यूटी अनुभव वाले किसी व्यक्ति के लिए प्रतिबद्ध होना, या उस विशेषज्ञता के लिए प्रशिक्षण। वेनिला सी ++ की तुलना में अंदर और ऊपर की ओर एक ठेकेदार प्राप्त करना कठिन है।

जब Qt 3.x से 4.x में बदल गया, तो हमारी टीम को पोर्ट करने के लिए लगभग 9 महीने की आवश्यकता थी, उस दौरान थोड़ी नई कार्यक्षमता जोड़ी गई थी। आप बाकी समय में वृद्धि की दक्षता में वृद्धि के लिए उस प्रमुख उन्नयन लागत की उम्मीद करते हैं। (ध्यान दें, मैंने Qt के लाभों को छोड़ दिया है, जिनमें से कई भी हैं)


2
Qt3 से Qt4 पोर्ट ज्यादातर उन लोगों के लिए कठिन था जिन्हें मैं जानता हूं। क्यूएमएल और इसी तरह की चीजें जो नए संस्करणों में पेश की गई हैं, मुझे चिंतित करती हैं, क्योंकि इसका मतलब एक बार फिर से एक जटिल बंदरगाह आ सकता है।
विटर पाय

10

Qt मानक C ++ लाइब्रेरी का उपयोग नहीं करता है , लेकिन इसकी अपनी QString, QVector, QMap, ...

इसका मतलब है कि आपको एक महत्वपूर्ण डिजाइन निर्णय करना होगा: आवेदन के किन हिस्सों में QString का उपयोग किया जाएगा और कौन से भाग std :: string का उपयोग करेंगे?

कुछ हिस्सों में std :: string का उपयोग करना और अन्य भागों में QString का अर्थ है, आपको QString और std :: string के बीच की सीमाओं में बदलना होगा।

उस ओवरहेड से बचने के लिए, कोई आपके आवेदन पर QString का उपयोग करने का निर्णय ले सकता है। लेकिन यह 3 पार्टी पुस्तकालयों का उपयोग करने के लिए बहुत कठिन बनाता है जो Qt, उदाहरण के लिए बढ़ावा देने पर आधारित नहीं हैं।

(ध्यान दें कि वही std पर लागू होता है :: मानचित्र बनाम QMap, std :: वेक्टर बनाम QVector, और इसी तरह)

यह तय करना कि कौन से हिस्से क्यूटी के प्रकारों का उपयोग करते हैं और कौन से हिस्से एसटीएल का उपयोग करते हैं एक प्रमुख डिजाइन निर्णय है, जिसमें प्रमुख निहितार्थ हैं। और केवल इसलिए कि क्यूटी मानक सी ++ लिबरी का उपयोग करने से इनकार करता है।

IMHO, यह निर्णय परियोजना के आधार पर किसी भी तरह से जा सकता है। इसलिए मैं आपके सवाल का जवाब नहीं दे सकता कि कौन से बचने के लिए।


1
मैं सहमत हूं, लेकिन मैं किनारे पर जाऊंगा और कहूंगा कि QString (आदि) भी ताकत में से एक है क्योंकि उनके साथ काम करना बहुत अच्छा है।
जोहान

1
इसके अलावा, यह सब एक पुस्तकालय का उपयोग करने के लिए कठिन नहीं है जो QString का उपयोग नहीं करता है। QString को std :: string और इसके विपरीत में कनवर्ट करने के लिए एक सरल विधि है। इससे ज्यादा नहीं।

@ ग्लेन नेल्सन: हाँ, आजकल QString के लिए रूपांतरण कार्य हैं; बहुत उपयोगी और सुविधाजनक! लेकिन विशेष रूप से QVector और QMap के लिए परिवर्तित करने में ओवरहेड होगा (और सरल समाधान जैसे QVector <QString> के लिए काम नहीं करेंगे); लाइन के नीचे प्रदर्शन की समस्याओं से बचने के लिए डिजाइन के दौरान उस ओवरहेड पर विचार किया जाना चाहिए।
सोजेरड

3

यह सीधे सवाल का जवाब नहीं देता है, लेकिन मुझे लगता है कि यह ध्यान देने योग्य है: शायद क्यूटी का सबसे 'खतरनाक' पहलू यह है कि नोकिया ने MSoft के साथ बिस्तर में प्रवेश किया है ...


2
लेकिन उन्होंने इसे करने के लिए Qt को छोड़ दिया।
मार्टिन बेकेट

1
पूर्णता के लिए - क्यूटी का व्यावसायिक हिस्सा अब डिगिया के स्वामित्व में है, जबकि क्यूटी "ओपन गवर्नेंस" की प्रणाली में स्थानांतरित हो गया है जहां अन्य आसानी से योगदान कर सकते हैं। केडीई फ्री क्यूटी फाउंडेशन भी है जो क्यूटी को बंद स्रोत से जाने से बचाता है।
विशेश हांडा

2

हाल ही में मुझे पता चला कि एक QChar, इसके नाम के बावजूद, वास्तव में एक वर्ण के अनुरूप नहीं है, लेकिन UTF-16 कोड इकाई के अनुरूप है। इस प्रकार, जब आप चरित्र द्वारा एक अनियंत्रित यूनिकोड पाठ चरित्र को स्कैन करना चाहते हैं, तो आपको उच्च और निम्न सरोगेट से निपटने, पात्रों और इसी तरह के संयोजन के लिए एल्गोरिदम जोड़ना होगा।

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