2010-01-21 12 views
5

की आवश्यकता है तो मैं अब एक वर्ष की तरह सी # सीख रहा हूं (मैं 20 साल का हूं) और मुझे इसके साथ बहुत भरोसा है। मैं हर बार फिर से सी ++ के साथ दखल दे रहा हूं। उदाहरण के लिए हाल ही में मैं सी ++ के लिए Nehe OpenGL tutorials का पालन कर रहा हूं और मुझे इसे सीखने का एक मजेदार तरीका मिल रहा है।wxwidgets सी ++ शुरू करने के लिए एक कोमल नज

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

इसलिए मैंने कुछ नए जीयूआई ढांचे के लिए चारों ओर गुगल किया और wxWidgets के साथ खेलना शुरू करने का निर्णय लिया (लाइसेंसिंग के कारण Qt के खिलाफ निर्णय लिया)। मैंने इसे डाउनलोड किया, इसे संकलित किया, और यह देखने के लिए देखा कि क्या RAD विकास के लिए कोई आईडीई प्लग-इन था, क्योंकि आप कल्पना कर सकते हैं कि एक घटक को ड्रैग से छोड़कर सी # में एक फॉर्म पर छोड़ दें, मैं कुछ इसी तरह की उम्मीद कर रहा था।

मैंने सीखा कि code::blocks में कुछ ऐसा है, इसलिए मैंने कोशिश की। यह ठीक था लेकिन जिस चीज ने मुझे बंद कर दिया वह भयानक कोड पूरा करना था; यह केवल वर्तमान ऑब्जेक्ट में सदस्यों और विधियों को दिखाएगा और # शामिल शीर्षलेख फ़ाइलों के लिए कुछ भी नहीं होगा। मैं समझता हूं कि कोड पूर्णता/IntelliSense सी ++ के लिए आसान नहीं है लेकिन विजुअल स्टूडियो 2008 इसे बहुत अच्छा संभालता है। मुझे कुछ अन्य आरएडी उपकरण मिल गए जैसे कि WxFormBuilder लेकिन यह पैसा खर्च करता है, ऐसा कुछ नहीं जो मैं सीखने के लिए करना चाहता हूं।

तो मेरा TLDR प्रश्न यह है कि अगर किसी को wxwidgets के साथ अनुभव हुआ है? क्या आप बस जो भी आईडीई के साथ सहज हैं और बस जीयूआई कोड करते हैं? मतलब कोई दृश्य सहायक नहीं है? शायद आप मुझे किस दिशा में जाना चाहिए में मुझे एक झुकाव दे सकता है :)

धन्यवाद, यह इस साइट पर भी मेरी पहली पोस्ट है, हालांकि मैंने कई धागे पढ़े हैं इससे पहले कि मुझे गंभीर समस्याएं हल करने में मदद मिली है। चीयर्स!

+1

क्यूटी एलपीजीएल है - उस लाइसेंस के बारे में आपको क्या पसंद नहीं है? आईएमओ, क्यूटी अधिक व्यापक और पेशेवर ढांचा है। इसे गिनें मत। – JimDaniel

+1

उम्म, मुझे लगता है कि एलपीजीएल के साथ आपको स्थिर लिंकिंग की अनुमति नहीं है? और मेरा कोड opensource होना चाहिए? मैंने लाइसेंसिंग चीज को पढ़ने की कोशिश की लेकिन यह एक विशाल टीएलडीआर लॉल था इसलिए मैंने सोचा कि wxwidgets मुक्त होने के लिए और अधिक उपयुक्त विकल्प होगा। शायद नहीं? – Daniel

+0

एलजीपीएल का मतलब है कि आपको अपने क्यूटी डीएलएस के साथ रिंकंक करने की अनुमति देने के लिए अपने आवेदन की ऑब्जेक्ट फाइलें प्रदान करनी होंगी ... या ऐसा कुछ है :) यही कारण है कि मैं wxwidgets का उपयोग करता हूं - कोई परेशानी नहीं! –

उत्तर

8

मेरा सुझाव है कि कोड में wxwidgets के साथ जीयूआई लेआउट कैसे करें, तब जब आप इसे प्राप्त करते हैं तो सीखें कि जीयूआई उपकरण का उपयोग कैसे करें।

कुछ समय के लिए मैन्युअल रूप से इस तरह के काम करने से आपको अपनी आवश्यकता के बारे में समझ मिलती है ("ठीक है, मुझे इन दो क्षैतिज wxSizers को रखने के लिए एक wxSizer, लंबवत की आवश्यकता है, जहां मैंने अपना wxStaticText और wxTextCtl रखा है प्रत्येक पंक्ति ... ") ... जहां मुझे लगता है कि अगर आपने जीयूआई टूल्स के साथ शुरुआत की है तो आप नाराज हो जाते हैं क्योंकि (पिछली बार मैंने देखा) उनमें से कोई भी आपके जैसे ड्रैग और ड्रॉप संपादक नहीं थे। नेट।

+0

ठीक है धन्यवाद, मैं इस अच्छी सलाह के लिए उस – Daniel

+0

+1 से शुरू करूंगा। इस तरह से शुरू करना एक अच्छा विचार है! –

+0

+1 इसे अपने सिर में देखने के लिए। मेरा मानना ​​है कि यदि आप कल्पना नहीं कर सकते कि मैन्युअल रूप से कैसे करें, तो आप किसी भी तरह से ड्रैग-एंड-ड्रॉप संपादक में इसे सही नहीं कर पाएंगे। – Dashogun

0

wxGlade और wxFormBuilder है।

मुझे नहीं पता कि कोई दूसरा है या नहीं, लेकिन मुझे पता है कि WxFormBuilder मुझे नि: शुल्क और खुला स्रोत है।

आपको wxGlade (http: // wxglade.sourceforge.net/) के मुखपृष्ठ पर अन्य टूल्स के लिंक मिलेंगे।

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

फिर भी व्यक्तिगत रूप से मैं इनमें से किसी भी उपकरण का उपयोग नहीं करता हूं, सिवाय इसके कि कभी-कभी यह देखने के लिए कि यह करने से पहले यह कैसा दिख रहा है लेकिन वास्तव में कोड उत्पन्न नहीं करता है।

0

मैं ड्रैग और ड्रॉप डिजाइनर का उपयोग किये बिना wxwidgets का उपयोग करता हूं।स्पष्ट रूप से उस दृष्टिकोण पर कमियां हैं लेकिन एक फायदा यह है कि आपके पास सौदा करने के लिए कोई भी भयानक स्वचालित रूप से जेनरेट कोड नहीं है। अतीत में मैंने पाया है कि मेरे प्रोजेक्ट के बीच में इस तरह के कोड के कारण विभिन्न प्रकार के दुःख पैदा हुए हैं - विशेष रूप से यदि आप तय करते हैं कि इसे कुछ गंभीर परिवर्तनों की आवश्यकता है तो अक्सर स्क्रैच से शुरू करना आवश्यक है क्योंकि फॉर्म डिजाइनर "लेखन" "संपादन के विरोध में"।

सरल अनुप्रयोगों के लिए आप बिना किसी कठिनाई के अनुकूलित और मानक विजेट के मिश्रण का उपयोग करके एक यूआई इकट्ठा कर सकते हैं। WxWidgets नमूने और डेमो देखें, जो उस दृष्टिकोण का उपयोग करते हैं। मेरा शतरंज ऐप (मेरी वेबसाइट देखें) इस दृष्टिकोण का भी उपयोग करता है।

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

अंत में मैं इंगित करता हूं कि क्यूटी लाइसेंस के साथ समस्याएं मूल रूप से दूर हो गई हैं क्योंकि नोकिया ने ट्रॉल्टेक खरीदा है और इसे "अधिक" मुक्त (एलजीपीएल लाइसेंस) बनाया है। बहुत से लोग सोचते हैं कि क्यूटी इन दिनों जाने का रास्ता है। मैं wxwidgets से बहुत खुश हूं लेकिन निश्चित रूप से एक दिन गंभीरता से Qyt का मूल्यांकन करेगा। अपनी परियोजनाओं के साथ शुभकामनाएँ।

+0

सच है, सी # में यह आम तौर पर चीजों को अदृश्य रूप से बदलने का फैसला करता है और यह बहुत परेशान है, ये साइज़र चीजें उलटी डॉकिंग की तरह ध्वनि की तरह होती हैं। आपके इनपुट के लिए कूल धन्यवाद – Daniel

+0

साइज़र किसी ऐसे व्यक्ति के हाथों में एक अद्भुत टूल है जो जानता है कि वे क्या कर रहे हैं। –

1

निश्चित रूप से Code::Blocks एक और प्रयास दें। WxWidgets के साथ काम करने के लिए यह एक अद्भुत वातावरण है। यह WxWidgets प्रोजेक्ट्स के लिए एक फॉर्म डिज़ाइनर और टेम्पलेट्स के साथ आता है, इसलिए मैं इसके बिना काम करने की कल्पना नहीं कर सकता।

इसके अलावा, एक अच्छी शुरुआत करने वाले WxWidgets के परिचय के लिए, this पृष्ठ आज़माएं। जब मैंने इसके साथ शुरुआत की तो इससे मुझे बहुत मदद मिली।

+0

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

+0

एमएफसी अवाफुल है! मैं इसका कभी भी उपयोग नहीं करूंगा। और यहां तक ​​कि अगर मुझे करना है, तो मैं इससे नफरत करता हूं। –

+0

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

0

wxFormBuilder लेकिन यह पैसे की लागत

wxFormBuilder स्वतंत्र और खुला स्रोत है

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

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

WxWidgets में जीयूआई प्रोग्रामिंग के साथ विजुअल स्टूडियो का उपयोग करना बहुत आसान है।

यदि आप लिनक्स पर पोर्ट करना चाहते हैं तो CodeLite संपादक भी देखना न भूलें। यह विजुअल स्टूडियो परियोजनाओं और शॉर्टकट कुंजियों के साथ बहुत संगत है।

+0

आह! वीसी ++ में wxwidgets - मुसीबत के लिए एक नुस्खा। Http: // stackoverflow देखें।कॉम/प्रश्न/1 9 16782/स्थैतिक-लाइब्रेरी-लिंक-इन-डब्ल्यूएक्सविड्जेट्स-स्टेटिक-लेकिन-ऐप-का उपयोग-मेरी-lib-still-required और http://stackoverflow.com/questions/134029/wxwidgets-setup-h- कोई ऐसी फ़ाइल –

+0

दृढ़ता से, असहमत, आपको शुरू करने के लिए कुछ अनुभव की आवश्यकता है, लेकिन एक बार बूट होने के बाद, यह VS का उपयोग करके प्रोग्राम करने के लिए बहुत तेज़ है। और मैं यह कह सकता हूं क्योंकि मैंने एक wxVS2008 इंटीग्रेशन एकीकरण टूल बहुत लंबा लिखा है (अब और उपलब्ध नहीं है), और किसी अन्य आईडीई की तुलना में वीएस का उपयोग करना बहुत आसान है। –

+0

वीसी ++ और कोडब्लॉक दोनों का उपयोग करने के बाद, मैं ईमानदारी से कह सकता हूं कि कोडब्लॉक बेहतर है। यह सही नहीं है, लेकिन अभी भी बेहतर है। उत्पादकता की बात आने पर –

0

मैं wxWidgets का उपयोग कर आवेदन GUIs के एक नंबर का विकास किया है - आप http://ravenspoint.com/

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

एक डिजाइन प्रोग्राम तेज़ और सरल होना चाहिए। मैं http://www.balsamiq.com/

एक बार जब आप डिज़ाइन पर बस गए हैं, तो आप कोडिंग पर जा सकते हैं। व्यक्तिगत रूप से, मुझे लगता है कि WxWidget कन्स्ट्रक्टर के wxPosition और wxSize पैरामीटर का उपयोग करके पैनल पर विगेट्स को विचलित करना - माउस का उपयोग करके विजेट को अपनी सटीक स्थिति में घुमाने की कोशिश करने से आसान है।

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

+1

मुझे पता है कि यह कोई समाधान नहीं है लेकिन मैं जो करता हूं वह फॉर्म को डिज़ाइन करने के लिए एक आरएडी का उपयोग करता है, फिर कोड को एक संपादक में कॉपी और पेस्ट करें और 'इसे ठीक करें।' फिर मैं इसे ऐप के स्रोत कोड में एकीकृत करता हूं। –

+0

जॉर्ज - यह एक समाधान है यदि यह आपके लिए काम करता है। हालांकि, 'इसे ठीक करें' कदम मेरे लिए थकाऊ लगता है। मुझे आश्चर्य है कि क्या यह कभी आसानी से बनाए रखा कोड उत्पन्न करेगा, उदाहरण के लिए, सार्थक चर नाम और कोड ऑर्डर? आपके और मेरे दृष्टिकोण दोनों के साथ समस्या, निश्चित रूप से, पुनरावृत्ति डिजाइन है। कम से कम बाल्सामीक से जीयूआई मॉक-अप कोड को उत्सर्जित करने का नाटक नहीं करते हैं, और मुझे मशीन और मानव उत्पन्न कोड के मिश्रण को संपादित करने का सामना नहीं करना पड़ता है - यह अच्छा या बुरा के लिए मेरा अपना काम है। कुछ समय बाद आप जीयूआई कोड लिखना सीखते हैं जो ग्राहकों को परिवर्तन के लिए पूछने पर समायोजित करना आसान होता है। – ravenspoint

0

मैंने नेटबीन्स आईडीई का उपयोग करके wx और fltk दोनों में एक हैलो वर्ल्ड प्रोग्राम करना समाप्त कर दिया। माइक्रोसॉफ्ट विजुअल स्टूडियो WinForms या एमएफसी या तो से कहीं अधिक आसान था। मुझे क्रॉस प्लेटफ़ॉर्म क्षमता की आवश्यकता थी इसलिए मैं इस एप्लिकेशन के लिए इसका उपयोग नहीं कर सका। मैंने wx की तुलना में बहुत कम समय में fltk समाप्त किया। कार्यक्रम सरल, छोटा, तेज़ और लिखना आसान था। डब्ल्यूएक्स में बहुत निराश दस्तावेज और संगठन था। Fltk को "पुराने दिनों" में वापस डिजाइन किया गया था जब छोटे तेज़ और कुशल मूल्यवान थे। शायद यही कारण है कि यह आपको "पुराना" लगता है। मैं एक बूढ़ा लड़का हूँ इसलिए यह मेरे लिए काम किया। YMMV

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