क्या कोई समझा सकता है कि GUI कैसे काम करता है और मुझे एक का उपयोग कब शुरू करना चाहिए? [बन्द है]


16

मैं C ++ को अब लगभग एक महीने से सीख रहा हूं, और इससे पहले कि मैं और आगे जाऊं, मैं इस थकाऊ सवाल को साफ करना चाहूंगा, जो मेरे पास है। मुझे पता है कि GUI क्या है, लेकिन मुझे वास्तव में नहीं पता कि यह कैसे काम करता है, और शायद लोकप्रिय लोगों के उदाहरण?

हालांकि मुझे पता है कि कमांड लाइन प्रोग्रामिंग नंगे मूल सिद्धांतों है, मुझे लगता है कि यह जीयूआई के साथ खिलवाड़ करना मजेदार होगा।

हालांकि मेरे पास लगभग 3 मिलियन अन्य प्रश्न हैं, मैं उन्हें बचाऊंगा: डी


1
अंतिम पंक्ति ने मुझे मुस्कान दी :) +1 के लिए
CyprUS

जवाबों:


28

मैं GUI पुस्तकालयों के एक जोड़े पर सामान्यीकरण कर रहा हूं लेकिन एक बहुत ही उच्च स्तर पर सबसे महत्वपूर्ण अवधारणा जिसे आपको समझने की आवश्यकता है वह यह है कि GUI संचालित है

कंसोल एप्लिकेशन में आपका उपयोगकर्ता इनपुट आमतौर पर आपके द्वारा निर्धारित कुछ बिंदुओं पर होता है। आप अपने उपयोगकर्ता को संकेत देते हैं, आप उसके इनपुट की प्रतीक्षा करते हैं, आप उस इनपुट के आधार पर कुछ गणना करते हैं। मुख्य अंतरों में से एक यह है कि इनपुट केवल एक ही स्थान पर होता है, आप कमांडलाइन से पाठ पढ़ रहे हैं ( stdinC ++ में)।

जीयूआई एप्लिकेशन में आपके पास आमतौर पर कई स्थान होते हैं जहां इनपुट हो सकता है, उदाहरण के लिए बटन जो विभिन्न कार्यों या पाठ क्षेत्रों का प्रदर्शन करते हैं। यह वह जगह है जहां घटनाएं खेल में आती हैं। उदाहरण के लिए, एक बटन क्लिक करने से एक घटना शुरू होती है। इस घटना को एक इवेंट हैंडलर द्वारा नियंत्रित करने की आवश्यकता है , जो आमतौर पर सिर्फ एक विधि है जो एक इवेंट ऑब्जेक्ट लेता है एक कहा जाता है जब ऐसा एक भी ट्रिगर होता है। ईवेंट हैंडलर के बारे में आपका बटन कैसे जानता है? आप आमतौर पर सदस्यता लेते हैं (या इसे सुनते हैं)।

यहाँ एक "C ++ प्रेरित" उदाहरण है, यह वास्तविक qt या C ++ कोड नहीं है।

class MyClickHandler : public ClickListener{
   void clickHandler(ClickEvent e){
      showAlertBox("The button "+e.getSource().getName()+" has been clicked"); 
   }
};

जब आप बटन बनाते हैं, तो आप बटन के खिलाफ MyClickHandler वर्ग का एक उदाहरण दर्ज करते हैं।

...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...

अब हर बार बटन पर bक्लिक करने पर एक संदेश बॉक्स दिखाई देता है, जिसमें कहा गया है कि "बटन सहेजें पर क्लिक किया गया है"।

आप सोच सकते हैं कि GUI एप्लिकेशन के दो चरण हैं:

  • जीयूआई स्थापित करें: स्टार्टअप पर एक छोटी अवधि, जहां सभी ऑब्जेक्ट बनाए जाते हैं और एक दूसरे के साथ जुड़े होते हैं।
  • घटना पाश : अपने जीयूआई जबकि पाश एक बड़ा में है और सिर्फ वहाँ बैठी है सुस्ती जब तक एक घटना शुरू हो रहा है।

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

ढांचे के लिए, उनमें से बहुत सारे हैं: सी ++ के मामले में मैं शायद क्यूटी की सिफारिश करूंगा।

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


यदि आप वर्ग परिभाषा के अंत में एक अर्धविराम जोड़ते हैं, और उत्तराधिकार को सार्वजनिक करते हैं, तो यह उचित / संभव C ++ वाक्यविन्यास होगा।
लेस्टर

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

1
+1 यह एकमात्र ऐसा उत्तर है जो प्रश्न का उत्तर देता है (मुझे ऐसा लगता है कि वह केवल रूपरेखा के बारे में नहीं पूछ रहा है, वह सामान्य अवधारणाओं के बारे में पूछ रहा है)
फेडेरिको क्लेज़ कुल्लोका

1
Ewwww .... बदसूरत श्रोता बकवास।
डेडएमजी

7

अब GUI पोरग्रामिंग सीखने के लिए उतना ही अच्छा समय है। जैसा कि आप जानते हैं कि सी ++, मैं क्यूटी को देखने की सलाह दूंगा। महान प्रलेखन, विशाल उपयोगकर्ता आधार और उदाहरणों / ट्यूटोरियल के बहुत से जानने के लिए उपलब्ध।


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

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

3

आप Microsoft Visual Studio C ++ एक्सप्रेस से भी शुरू कर सकते हैं । आईडीई बहुत ही अनुकूल और उपयोग करने में आसान (और मुफ्त!) है, और आप बहुत जल्दी अपने पहले जीयूआई एप्लिकेशन बनाने में सक्षम होंगे ... जो आपको इवेंट-संचालित प्रोग्रामिंग की मूल बातें समझने में ध्यान केंद्रित करने में मदद करेगा , एक अलग दृष्टिकोण। कि आपको मास्टर करने की आवश्यकता होगी।

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


1
VC ++ एक्सप्रेस में आप GUI के साथ लिख सकते हैं: 1. Win32 API जो बहुत पुराना, बोझिल और सिर्फ हास्यास्पद है 2. MFC जो बकवास का पुराना ढेर है 3. WTL जो बेहतर है लेकिन क्रॉस-प्लेटफॉर्म नहीं है। 4. सी ++ / सीएलआई जो अलोकप्रिय है, बुरी तरह से समर्थित है (यहां तक ​​कि कोई असहनीय भी नहीं) और बहुत जटिल है। क्यूटी आसान है, क्रॉस-प्लेटफ़ॉर्म, अच्छा जीयूआई डिज़ाइनर है और इसमें बड़ी मात्रा में उपयोगी गैर-जीयूआई कक्षाएं हैं जो अपने छोटे मानक पुस्तकालय के साथ सी ++ में बहुत महत्वपूर्ण हैं।
एंटोन बर्कोवस्की

0

शायद StackOverflow के लिए अधिक उपयुक्त, टैग किया गया c ++; लेकिन वैसे भी।

Google पर इनमें से कुछ को देखें; Qt, WxWidgets, TheForgers 'WinApi, Fltk ...

GUIs का उपयोग करना मुश्किल नहीं है, खासकर जब आप पहले से ही c ++ जानते हैं। WxWidgets I reckon के साथ जाएं; एक महीने के सीखने के लिए क्यूटी थोड़ा बहुत जटिल है। आप कुछ घंटों में Wx उठा सकते हैं।


-1

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


2
सीएलआई जटिल नहीं है और जीयूआई की परिभाषा उपयोगकर्ता के लिए अधिक जटिल है। वे अधिक सुलभ हैं कम जटिल नहीं।
ओमिनस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.