मुझे क्या चुनना चाहिए: GTK + या Qt? [बन्द है]


88

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

मैं उनके बारे में पढ़ रहा था, और उनमें से एक को सीखना / उपयोग करना शुरू करना माना।

सबसे आम क्या है? उनमें क्या अंतर है? आप एक को दूसरे पर क्यों चुनेंगे?


20
मूल रूप से, Qt लाइसेंसिंग मॉडल के बारे में बहुत विवाद था जो या तो पूर्ण GPL या वाणिज्यिक था, जबकि GTK + LGPL था (इसलिए बाद में आपके बंद स्रोत उत्पाद के साथ संयोजन में उपयोग करना आसान था)। लेकिन अब Qt भी LGPL IIRC के रूप में उपलब्ध है, इसलिए यह एक या किसी अन्य को चुनने के लिए एक वास्तविक कारण नहीं है।
रोतल

3
आप इसे ज्यादातर संबंधित प्रश्न पर भी देख सकते हैं: stackoverflow.com/questions/1801074/…
कालेब हाइट - cjhuitt

4
और फिर से एक अच्छा सवाल स्टैकओवरफ्लो पर बंद हो गया। मैं यह जोड़ना चाहता हूं कि यदि आपको एक अच्छे एकीकृत HTML विजेट की आवश्यकता है तो आपको अब GTK का उपयोग करना होगा (क्यूटी 5.2 नाटकीय रूप से / अनुपयोगी कम सुविधा सेट पर चले जाने के बाद) या क्यूटी का उपयोग करें और क्रोम CEF को एम्बेड करें जो बहुत सारे सामान, जटिलता और जोड़ रहा है अपने ऐप पर 20MB।
लोथर

जवाबों:


94

जैसा कि आप मुख्य रूप से लिनक्स को लक्षित करते हैं, तो विकल्प ज्यादातर उस प्रोग्रामिंग भाषा पर निर्भर करता है जिसका आप उपयोग करना चाहते हैं।

यदि आप सी में कोड करते हैं, तो स्पष्ट रूप से जीटीके + के लिए जाएं

यदि आप C ++ में कोड करते हैं, तो Qt के लिए जाएं, अन्यथा आपको Gtkmm (GTK + पर C ++ आवरण की आवश्यकता होगी )

यदि आप पायथन में कोड करते हैं, तो GTK + और Qt दोनों के पास भाषा के लिए बाइंडिंग है: PyGtk , PyQt और PySide (स्वयं Nokia द्वारा लॉन्च किया गया) देखें।

यदि आप जावा में कोड करते हैं, तो Qt कोई अधिक व्यवहार्य विकल्प नहीं है जैसा कि नोकिया ने क्यूटी जंबी ( क्यूटी के लिए जावा बाइंडिंग) को बंद कर दिया है

इसके अलावा, Qt अपने सीनग्राफ QGraphicsScene API के बारे में अधिक शीर्ष पर है, इसका स्क्रिप्टिंग इंजन जावास्क्रिप्ट कोर ( इंजनिंग पॉवरिंग वेबकिट), इसकी स्टेट मशीन और एनिमेशन फ्रेमवर्क और घोषित यूआई पर बनाया गया है

GTK + इस बात की पेशकश नहीं करता है कि आप इसके साथ अव्यवस्था का उपयोग कर सकते हैं ।

यदि आप विशेष रूप से DB में देख रहे हैं, तो XML (GTK + में XML के सबसेट के लिए एक पार्सर है) और थ्रेडिंग (GTK + में GLib ) की विशेषताएं हैं तो Qt QtSql , QtXml और QtSoncurrent में वह सब पेश करेगा ।

सब सब में, मैं कहूंगा कि क्यूटी एक निश्चित विकल्प है। लेकिन साथ ही GTK + बहुत सक्षम है।

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

पुनश्च: मेरी योजना सिम्बियन को भी लक्षित करने की है, फिर Qt के लिए जाएं।

संपादित करें: कुछ ऐसा जो Qt के साथ भी महान है QtWebView: यह वेब सामग्री प्रदर्शित करने के लिए आपके Qt एप्लिकेशन में क्रोमियम लाता है। अन्य लोग Awesomium या Berkelium का उपयोग करके अपने आवेदन में वेब सामग्री एम्बेड कर रहे हैं।


यह मत भूलो कि QtScript JavaScriptCore द्वारा संचालित है, जो वर्तमान में सबसे तेज जावास्क्रिप्ट इंजन है जो कि स्क्विरलफिश एक्सट्रीम के लिए धन्यवाद है।
CMircea

1
आपके संपादन के बारे में, GTK + के लिए WebKitGtk + है। जब तक एक दूसरे की तुलना में अधिक परिपक्व नहीं होता, मुझे नहीं लगता कि QtWebKit का अस्तित्व GTL + पर एक लाभ के रूप में योग्य है।
मैथ्यू

यदि आप रूबी में कोड QtRuby के लिए देखो ।
जोस एंडियास

5
gtkmmमहान है, GTK + की सभी शक्ति लेकिन आधुनिक परिभाषा द्वारा वास्तविक C ++ का उपयोग करते हुए , मैंने सबसे साफ, सबसे पठनीय GUI कोड का उत्पादन किया है ... वास्तव में, बस सबसे अधिक सहने योग्य , क्योंकि जब मैंने पहली बार GUI प्रोग्रामिंग सीखने की कोशिश शुरू की, यह gtkmmजीने की मेरी इच्छा को बहाल करने की नीरसता थी । शुक्र है, दृढ़ता ने भुगतान किया, और मुझे पता चला कि यह बहुत शक्तिशाली है, और इसने मुझे सी ++ 14 में ++ 03 से अधिक पाने के लिए प्रोत्साहित किया। इसके अलावा, यह एक दशक से अधिक AFAICT के लिए एक ही प्राथमिक अनुचर द्वारा अच्छी तरह से बनाए रखा गया है। मैं सिर्फ एक प्रशंसक हूं, कोई संबद्धता नहीं है, आदि
अंडरकॉर्क_ड

3
ओह ... सिम्बियन दिनों ...
Daka

41

मैंने पहले GTK +, qt और wxWidgets का उपयोग किया है। यहाँ एक संक्षिप्त सारांश है:

अपने पहले क्रॉस प्लेटफ़ॉर्म UI प्रोजेक्ट के लिए मैंने मुख्य रूप से wxWidgets के लिए जाने का फैसला किया क्योंकि उस समय लाइसेंस क्यूटी (क्यूटी जीपीएल और केवल लिनक्स के लिए) के रूप में प्रतिबंधात्मक नहीं था और इसमें प्लेटफ़ॉर्म विशिष्ट यूआई (जीटीके के विपरीत) था। परियोजना ने अच्छी तरह से काम किया, लेकिन अन्य प्लेटफार्मों में इसे संकलित करने और ठीक से चलाने के लिए काफी कुछ गड़बड़ियां थीं - कभी-कभी कुछ घटनाओं को अलग तरह से निकाल दिया जाता था और ऐसे। इसके अलावा wxWidgets में GDI काफी धीमी थी।

आगे मैंने अजगर में एक अलग परियोजना के लिए GTK का उपयोग किया। इसके लिए मैंने पायथन बाइंडिंग का इस्तेमाल किया और सब कुछ कमोबेश सुचारू रूप से चला। मुझे यह बिलकुल पसंद नहीं आया कि UI विंडोज और मैक पर देशी न लगे और जब आप GTK + ऐप लॉन्च करें तो यह हमेशा CRITICAL चेतावनियों के भार को डिबग करता है जो अनदेखा करना ठीक लगता है। : एस

अंत में, मैंने एक बहुत ही सरल क्यूटी प्रोजेक्ट किया जो कि नोकिया ने हासिल कर लिया है और यह शानदार था। तीनों में से सबसे अच्छा। सबसे पहले, यदि आप एक पुराने शिक्षक नहीं हैं जो VI या Emacs पसंद करते हैं, QtCreator शानदार है। मैं वास्तव में VI से प्यार करता हूं और इसे वर्षों से उपयोग करता हूं लेकिन मैं C ++ क्यूटी परियोजनाओं के लिए QtCreator को बहुत पसंद करता हूं। पुस्तकालय के बारे में मुझे भी बहुत सारे दस्तावेज और एपीआई उपलब्ध कराए गए। क्यूटी में स्लॉट्स और सिग्नल की अवधारणा है जो नए C ++ कीवर्ड और एक प्रीप्रोसेसर का परिचय देते हैं। असल में, एक ट्यूटोरियल पढ़ने के बाद आप इसे आसानी से प्राप्त कर लेंगे और इसे पसंद करने लगेंगे। अब मैं iPhone देव कर रहा हूं और यह कोको / इंटरफ़ेस बिल्डर के UI प्रतिमान जैसा महसूस करता है।

सारांश: मैं क्यूटी हाथों के लिए नीचे जाऊँगा। लाइसेंस बहुत अच्छा है और SDK और प्रलेखन वास्तव में अच्छा है।


13
मैं इसे सकारात्मक मानता हूं कि जीटीके + एप्लिकेशन विभिन्न प्लेटफार्मों पर समान दिखते हैं क्योंकि इसका मतलब है कि मुझे अतिरिक्त सप्ताह खर्च करने की ज़रूरत नहीं है, यह जानने के लिए कि मेरे UI को प्रत्येक मूल टूलकिट के साथ खुद को कैसे सही तरीके से व्यवस्थित करना है। इसके अलावा - when you launch a GTK+ app it always debug outputs loads of CRITICAL warnings which seem fine to ignore. :S- नहीं, यह नहीं है, जब तक आप कुछ गलत नहीं कर रहे हैं, जो ठीक नहीं है। मैंने कभी भी एक महत्वपूर्ण चेतावनी नहीं देखी है जो अपने स्वयं के ऊप्स से उपजी नहीं थी और सही कोड का उपयोग करके ठीक करना बहुत आसान नहीं था। और मुझे कोई डिबग संदेश नहीं मिलता है , यहां तक ​​कि चेतावनी भी नहीं
अंडरस्कोर_ड

25

मैंने कभी भी GTK का उपयोग नहीं किया है, लेकिन Qt का उपयोग करते हुए अपने व्यक्तिगत अनुभव से:

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

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

मुझे यकीन नहीं है कि जो सबसे आम है; यह शायद सही मापने के लिए मुश्किल है। वे निश्चित रूप से दोनों लोकप्रिय हैं। चूंकि गनोम उबंटू का डिफ़ॉल्ट डेस्कटॉप है, और ग्नोम जीटीके के शीर्ष पर बैठता है, तो जाहिर है इसका व्यापक उपयोग है। बेशक, केडीई बहुत लोकप्रिय है। नोकिया मोबाइल स्पेस में क्यूटी को बहुत जोर दे रहा है - उदाहरण के लिए नए N900 पर इस्तेमाल किया गया उनका मेमो ओएस, जल्द ही क्यूटी को डिफ़ॉल्ट टूलकिट में बदल रहा है (वर्तमान में यह जीटीके है।) मेरा मानना ​​है कि क्यूटी भी जल्द ही डिफ़ॉल्ट टूलकिट बन जाएगा। सिम्बियन OS के लिए।

मैंने Qt Creator का उपयोग नहीं किया है, लेकिन मैंने इसके बारे में कई अच्छी बातें सुनी हैं। यह क्यू के साथ स्पष्ट भारी एकीकरण के साथ एक सी ++ आईडीई है। यह नकली विम अनुकरण भी है जो हमेशा अच्छा होता है यदि आप उस तरह की चीज पसंद करते हैं!

Qt बिल्ड कॉन्फ़िगरेशन के लिए qmake का उपयोग करता है। मुझे अपने खुद के मेकफाइल्स लिखने की तुलना में यह बहुत अच्छा लगा। मुझे नहीं पता कि जीटीके भवन निर्माण के लिए क्या उपयोग करता है।

कुछ चीजें जो मैंने पहले क्यूटी के साथ थोड़ी विवादास्पद पाईं, वह प्रीप्रोसेसर मैक्रोज़ के बड़े उपयोग थे। सिग्नल / स्लॉट सिस्टम आपके आवेदन में गुजरने वाले ईवेंट / संदेश के लिए एक अच्छा तंत्र प्रदान करता है, लेकिन यह जादू की तरह थोड़ा सा महसूस करता है जो शायद कभी भी किसी अन्य टूलकिट के लिए पोर्टेबल नहीं हो सकता है। इसके अलावा, मॉक (मेटा-ऑब्जेक्ट कंपाइलर), जबकि मुझे पूरी तरह से यकीन नहीं है कि यह क्या करता है, यह भी पर्दे के पीछे जादू की तरह थोड़ा बहुत महसूस करता है।

सभी में, हालांकि, मैं क्यूटी की सिफारिश करूंगा, खासकर यदि आप सीख रहे हैं। यह वास्तव में अद्भुत प्रलेखन और एक अच्छा आईडीई, और व्यस्त मंचों है। आप इसके साथ बहुत तेज़ी से C ++ ऐप्स बनाने में सक्षम होंगे, विशेष रूप से QML 4.7 में आने के साथ।


9

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

दूसरी तरफ लिनक्स दुनिया में Gtk अधिक सामान्य है, इसलिए आप शायद वेब पर अधिक सहायता प्राप्त कर सकते हैं। Gtk के व्यापक होने का कारण संभवतः Gnome और Ubuntu के साथ अधिक करना है, बल्कि तब तकनीकी योग्यता है, लेकिन यदि आप चाहते हैं कि आप उन दोनों के साथ अच्छी तरह से मिश्रण करने के लिए सॉफ़्टवेयर बनाते हैं, तो आप Gtk के साथ और अधिक आसानी से प्राप्त करेंगे।


7

क्यूटी के लिए एक निश्चित डीबी, नेटवर्क, थ्रेडिंग सपोर्ट आदि है ... यह बहुत अधिक है तो बस जीयूआई को पार करता है (और यह इसे काफी अच्छी तरह से करता है)।

मैं इसे GTK + से अधिक की सलाह दूंगा।


3

बस क्यूटी फायदों को अन्य उत्तरों में जोड़ना .. क्यूटी के पास महान प्रलेखन, अपना खुद का आईडीई और जीयूआई निर्माता है और सी ++ को कुछ नई अवधारणाओं जैसे स्लॉट्स / सिग्नल (मूल रूप से घटनाओं) के साथ बढ़ाता है।

मैं GTK डेवलपर नहीं हूं, इसलिए मैं उन GTK दुनिया की तुलना नहीं कर सकता :(


11
Gtk के लिए, GUI क्रिएटर ग्लेड ( glade.gnome.org ) भी मौजूद है ।
davidbe

3

क्यूटी। यह केवल वस्तु उन्मुख नहीं है, "अच्छी" वस्तु उन्मुख है। यह C ++ की "सबसेट" पर आधारित है, जो C ++ की अस्पष्टता पर निर्भर नहीं करता है (लेकिन यदि आप उनके साथ मर्दवाद करते हैं, तो आपको उनके साथ रहने की अनुमति है;))।

अब इसकी एक मजबूत गति है कि नोकिया ने इसे खरीद लिया (वास्तव में नोकिया ने ~ 2/3 साल पहले)। यह सभी नोकिया और इंटेल मोबाइल उपकरणों (स्मार्टफोन, नेटबुक, टैबलेट) में होने जा रहा है।

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

इसका लाभ उठाएं।


5
सबसेट? Qmake और मॉक पर विचार करते हुए सुपरसेट की तरह।
rr-

1

ऐसा भी लगता है कि नोकिया हर जगह Qt का उपयोग करने वाला है, जैसे Maemo


1

यदि आप चाहते हैं कि आपका ऐप iOS, एंड्रॉइड, ब्लैकबेरी, अन्य मोबाइल प्लेटफार्मों, विंडोज, मैक ओएसएक्स और लिनक्स पर चले, तो क्यूटी का उपयोग करें।

qt-project.org

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