2009-07-27 14 views
10

मैं जितनी संभव हो सके जीयूआई अनुप्रयोगों को जल्दी और दर्द रहित बनाने में सक्षम हूं। मैं सी ++ में सक्षम हूं (हालांकि विशेषज्ञ नहीं हूं, और औपचारिक प्रशिक्षण नहीं है), लेकिन कभी भी जीयूआई बिल्डिंग टूलकिट या फ्रेमवर्क या कुछ भी इस्तेमाल नहीं किया है। मैं एक पेशेवर प्रोग्रामर नहीं हूं और जब जीयूआई ऐप्स बनाने की बात आती है तो मैं पूरी तरह से अनुभवहीन और अज्ञानी हूं। क्या करना है यह जानने की कोशिश कर रहे घंटों तक शोध किया है; हालांकि केवल अधिक उलझन में और निराश हो रही है।सबसे आसान सीखने की वक्र के साथ सी ++ जीयूआई बिल्डिंग विकल्प क्या है - वीएस/क्यूटी/wxwidgets/आदि।

क्यूटी और WxWidgets क्रॉस-प्लेटफ़ॉर्म ऐप्स के लिए सबसे लोकप्रिय विकल्प की तरह प्रतीत होते हैं, हालांकि क्रॉस-प्लेटफ़ॉर्म मेरे लिए महत्वपूर्ण नहीं है; विंडोज़ केवल तभी ठीक है जब इसका मतलब सबसे तेज़ सीखने की वक्र है।

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

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

मुझे wxwidgets के बारे में बहुत कुछ नहीं पता है, या यह क्यूटी के साथ तुलना कैसे करता है।

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

समझदार और मुझसे अधिक अनुभवी लोगों से किसी भी इनपुट की सराहना की जाएगी :)

+0

वीसी ++ में उन सभी कैरेट सी ++/सीएलआई के लिए हैं। वे भाषा में .NET विशिष्ट जोड़ हैं जो सीएलआर के साथ एकीकरण की अनुमति देते हैं। –

उत्तर

12

सबसे पहले , सरल शुरू करें। इस विषय के लिए बहुत कुछ है। यदि आपको यह कठिन लगता है, तो कोशिश न करें और इसे एक साथ में ले जाएं।

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

यहां एक ही स्थान में ट्यूटोरियल की एक सूची है, हालांकि आप देखेंगे कि उनका पहले ही देख चुके:

  • Qt's tutorial
  • WxWidgets' tutorial
  • Gtkmm bookकाफी एक ट्यूटोरियल नहीं है, हालांकि बहुत सारे उदाहरण हैं।
  • .NET ट्यूटोरियल, या तो WinForms के लिए या WPF के लिए।

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

  • List of Qt books
  • WxWidgets book (PDF version)
  • WPF और WinForms की टन कर रहे हैं पुस्तकें। मैं दुर्भाग्य से यहां एक अच्छी सिफारिश नहीं कर सकता।

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

मैं सामानों का एक गुच्छा सीखने के लिए अत्यधिक उत्सुक नहीं हूं जो कि अधिक सामान्य रूप से क्यूटी प्लेटफॉर्म पर ही लागू होता है।

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

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

मुझे लगता है कि मैं जीयूआई सामान को छोड़कर क्यूटी कक्षाओं का उपयोग करने से बच सकता हूं जहां मुझे उनका उपयोग करना है, लेकिन मुझे नहीं पता कि यह कितना बुद्धिमान या मूर्ख होगा।

क्यूटी के जीयूआई का उपयोग करने के लिए आपको क्यूटी के अधिकांश गैर-जीयूआई कक्षाओं की आवश्यकता नहीं है। कुछ अपवाद हैं (जैसे QVariant) जिन्हें आपको केवल इसलिए आवश्यकता होगी क्योंकि जीयूआई कक्षाएं उनका उपयोग करती हैं। मैंने पाया कि आप केस-दर-मामले के आधार पर उनको सीख सकते हैं।

6

मैं wxWidgets सुझाव है। मेरे लिए, यह बहुत सहज है और अच्छा लग रहा है।

Code::Blocks इसके साथ बनाया गया था, इसलिए यह देखने के लिए कि क्या आपको ग्राफिक्स पसंद हैं या नहीं।

WxWidgets, जैसे wxPython, wxErlang, और अन्य के लिए कई बाइंडिंग भी हैं, इसलिए यदि आप सी ++ को बंद करने का निर्णय लेते हैं, तो आप अपने साथ wxwidgets ले सकते हैं।

2

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

+14

या इसका मतलब है कि वीसी ++ दो बार Qt के रूप में उलझन में है। :-) या फिर बहुत सारे वीसी ++ प्रश्न हैं जो ग्राफिक्स से संबंधित नहीं हैं। मेरा मानना ​​है कि यहां समुदाय दोनों अच्छी तरह से समर्थन कर सकता है। –

+1

गुड कॉल डेविड! – Stewbob

5

मैं wxwidgets का भी उपयोग करता हूं और विंडोज़-केवल अनुप्रयोगों के लिए हर समय इसका उपयोग करता हूं (केवल नकारात्मक पक्ष यह है कि WxWidgets बड़े .exe फ़ाइलों के लिए कुख्यात है, जो आपके लिए कोई समस्या हो सकती है या नहीं भी हो सकती है)। मुझे शुरुआत से उपयोग करना बहुत आसान लगता है, खासकर जब एक जीयूआई डिजाइनर के साथ मिलकर (व्यक्तिगत रूप से मैं wxDev-C++ का उपयोग करता हूं)।

मैंने क्यूटी का कभी भी उपयोग नहीं किया है, इसलिए मैं इसकी सादगी से बात नहीं कर सकता, लेकिन मुझे संदेह है कि कठिनाई WxWidgets की तुलना में काफी अलग पैमाने पर है।हालांकि, मैं क्या कह सकता हूं कि इससे कोई फर्क नहीं पड़ता कि आप किस एपीआई का उपयोग करते हैं (WxWidgets, Qt, WinAPI, आदि) आपका कोड उस विशेष प्लेटफार्म में "लॉक हो जाएगा", तो चिंता न करें अगर आपको लगता है कि क्यूटी सीखने से आपको लॉक कर दिया जाएगा क्यूटी प्लेटफॉर्म (क्योंकि वही बात उन एपीआई के के साथ होगी)।

आप हालांकि विंडोज पर पूरी तरह काम कर रहे हैं, तो आपको पहले WinAPI के साथ कुछ सरल कार्यक्रमों क्या करना चाहते हो सकता है। Qt/wxwidgets पर जाने से पहले इस तरह आपको विंडोज जीयूआई प्रोग्रामिंग के निम्नतम स्तर की बुनियादी समझ है। उस ने कहा, यदि आप वास्तव में क्रॉस-प्लेटफ़ॉर्म प्रोग्रामिंग में हैं, तो इसके बारे में चिंता न करें और सीधे क्यूटी/wxwidgets में जाएं।

12

सीखने का सबसे आसान तरीका यह है कि आप वास्तव में कैसे सीखते हैं इस पर निर्भर करते हैं।

व्यक्तिगत रूप से, मैंने पाया है कि क्यूटी अब तक सीखने के लिए सबसे आसान है। जीयूआई कक्षाओं का उपयोग करने के लिए बहुत अच्छा है, लेकिन मुझे गैर-जीयूआई कक्षाएं उत्कृष्ट होने के लिए मिल गई हैं, जिससे आम तौर पर एक अधिक बुनियादी एपीआई के साथ आपको मिलने वाले कई सामान्य मुद्दों से बचना आसान हो जाता है। documentation उत्कृष्ट है, आईएमओ, किताबें, उदाहरण इत्यादि हैं। यह भी बहुत सक्रिय रूप से विकसित किया जा रहा है, निकट भविष्य में आने वाली कुछ नई प्रौद्योगिकियों (जैसे घोषणात्मक यूआई)।

मैंने पाया दृश्य स्टूडियो/Windows API/नेट एक अच्छा थोड़ा और अधिक जटिल जानने के लिए किया जाना है। एमएसडीएन पर एपीआई दस्तावेज अपेक्षाकृत जटिल है और वास्तव में इस तरह से संगठित नहीं है कि मुझे सहज ज्ञान मिलता है।

मैं कई बार सीखने wxWidgets की कोशिश की है, लेकिन मैं इसे पसंद किया API दस्तावेज़ नहीं किया है।

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

+0

मैं इस सिफारिश को दूसरा करता हूं। मैंने क्यूटी का इस्तेमाल किया ताकि मेरा ऐप क्रॉस-प्लेटफार्म होगा। आम तौर पर अधिक काम में क्रॉस-प्लेटफार्म के परिणामस्वरूप काम करना, लेकिन चूंकि क्यूटी इतनी अच्छी तरह से तैयार और सहायक रूप से सहायक थी, इसलिए मुझे यह एक एकल-ओएस लक्ष्य ऐप लिखने की तुलना में वास्तव में अधिक उत्पादक पाया गया, उदाहरण के लिए, सी # - खासकर अगर आप प्रबंधित कोड (उन कैरेट) की अर्ध-सी ++ दुनिया में फंस जाओ। उस ने कहा, मैं खुद को गति देने के लिए यहां अन्य टिप्पणियों से सहमत हूं, सीखने के लिए बहुत कुछ है। लेकिन अगर आप वहां लटकाते हैं तो बहुत सारे इनाम हैं - स्क्रीन पर आपके प्रयासों को देखने से ज्यादा फायदेमंद नहीं। :-) – moodboom

2

कोई फर्क नहीं पड़ता कि आप क्या चुनते हैं, मुझे पूरा यकीन है कि यह आसान और दर्द रहित नहीं होगा।

करने के बाद कहा कि मुझे पता है कि यह है कि कुछ स्कूलों में वे FLTK उपयोग करें, क्योंकि वे इसे relativelly आसान जानने के लिए विचार करें। मैंने कभी कोशिश नहीं की है।

मेरी हर रोज काम में मैं WTL जो प्रणाली के रूप में यह जबकि अभी भी शुद्ध Win32 से अधिक अमूर्त के कुछ स्तर प्रदान हो जाता है के रूप में करीब है का उपयोग करें। मुझे यकीन नहीं है कि अगर मैं सीखना आसान समझूंगा, हालांकि, विशेष रूप से दस्तावेज की कमी को देखते हुए।

+0

FLTK काम करने के लिए काफी आसान है और काफी पार मंच है। –

1

मैं codegear से कोडगियर सी ++ बिल्डर (जिसे पहले बोर्लैंड सी ++ बिल्डर के नाम से जाना जाता है) की सिफारिश करता हूं जो 30 परीक्षण के साथ आता है। इसके बारे में सबसे अच्छी बात यह है कि जीयूआई आपको ऐसे घटकों के साथ प्रदान करता है जो आप WYSIWYG फैशन में किसी रूप में छोड़ते हैं और घटनाओं को संभालने के लिए कोड जोड़कर कार्यात्मक बनाते हैं। यह बॉक्स के बाहर कंपोनेंट्स के पूरे समूह के साथ आता है और आप devexpress से भयानक ExpressQuantumGrid की तरह, या अपने स्वयं के लिखने के लिए तीसरे पक्ष के घटक भी जोड़ सकते हैं। यह बहुत शक्तिशाली है यदि आप जानते हैं कि आप क्या कर रहे हैं लेकिन सहज ज्ञान युक्त है कि एक शुरुआती कोड सरल कोड के लगभग 20 लाइनों में डेटाबेस सीआरयूडी आवेदन लिख सकता है।

7

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

और अगर तुम मुझे पसंद कर रहे हैं, तो आप प्रत्येक क्यूटी परियोजना में बढ़ावा libs के एक मुट्ठी भर में फेंक, क्योंकि हम "असली" सी ++ लिखना चाहते हैं, नहीं नरम बात क्यूटी का उपयोग करता है :)

+0

आमेन! –

0

क्यूटी आपके लिए सबसे अच्छा विकल्प है। यह सीखना सबसे आसान है, सबसे सुरुचिपूर्ण और शक्तिशाली और यह पूरी तरह से नि: शुल्क है।

  • दृश्य सी ++: यह एक आईडीई है, लेकिन यह एमएफसी नामक अपनी जीयूआई लाइब्रेरी के साथ आता है। एमएफसी कई quirks के साथ एक पुरानी पुस्तकालय है और सीखना और उपयोग करना मुश्किल है। कई सी ++ प्रोग्रामर विंडोज पर इसका इस्तेमाल करते हैं क्योंकि यह एमएस से आता है, यह तेज़ है और यदि आप विजुअल सी ++ खरीदते हैं तो यह मुफ़्त है। चूंकि वीसी ++ एक आईडीई है, इसलिए आप इसके साथ wxwidgets और Qt का भी उपयोग कर सकते हैं, हालांकि आपके विशेष मामले में मैं इसके बजाय क्यूटी निर्माता की सिफारिश करूंगा।

आपने प्रबंधित सी ++ के साथ प्रयोग किया है। इसका उपयोग न करें, यहां तक ​​कि एमएस भी सिफारिश करता है कि आप केवल सी ++ और सी # के बीच गोंद के रूप में प्रबंधित सी ++ का उपयोग करें।

  • wxwidgets: यह उस दिन तक एक मजबूत प्रतियोगी था जब वाणिज्यिक परियोजनाओं के लिए क्यूटी मुक्त हो गई थी। यह हमेशा क्यूटी की छाया में था और यह ज्ञात है कि दस्तावेज़ीकरण बहुत अच्छा नहीं है और एपीआई क्यूटी के रूप में सीखना उतना आसान नहीं है। क्रॉस-प्लेटफ़ॉर्म एमएफसी इसका वर्णन करने का एक अच्छा तरीका होगा।

  • सी ++ बिल्डर: बोर्लैंड ने सी ++ बिल्डर के साथ बहुत सी गलतियां की और देव उपकरण व्यवसाय को पूरी तरह समाप्त कर दिया। यह एक अच्छा उत्पाद था और मैंने मूल रूप से पहले संस्करणों में से एक में विंडोज जीयूआई प्रोग्रामिंग सीखा, लेकिन मैं अब इसका उपयोग नहीं करूंगा। बेहतर विकल्प हैं और यह बहुत महंगा है।

1

के बाद से कोई भी नहीं फिर भी यह उल्लेख किया है पूर्णता के लिए के लिए,, the Fox toolkit के लिए एक प्लग है। यह वह है जिसे मैंने पिछली बार इस्तेमाल किया था मैंने अपने स्वयं के संस्करण का कोई सी ++ यूआई काम किया था। रूबी और पायथन के लिए इसके लिए भी बाध्यकारी हैं (बाद में कई वर्षों से पुराना है, हालांकि)।

सामान्य में, आत्म निर्देशित काम के लिए एक टूलकिट का विकल्प

  1. लेआउट प्रबंधक शैली
  2. ईवेंट हैंडलर पंजीकरण शैली
  3. कैसे देशी विजेट सेट दिखता है के लिए व्यक्तिगत वरीयताओं को नीचे आता है तो पार platforming आवश्यक नहीं है
0

देखने के लिए/बनाया जा सकता है, कोशिश .net + msvs या delphi। आसान, सब-इन-वन, कोई दर्द नहीं।

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