บางคนสามารถอธิบายวิธีการทำงานของ GUI และเมื่อใดที่ฉันควรเริ่มใช้งาน [ปิด]


16

ฉันได้เรียนรู้ภาษา C ++ มาประมาณหนึ่งเดือนแล้วและก่อนที่ฉันจะไปไกลกว่านี้ฉันอยากจะตอบคำถามที่น่าเบื่อนี้ที่ฉันมีต่อไป ฉันรู้ว่า GUI คืออะไร แต่ฉันไม่รู้ว่ามันใช้งานได้จริงและอาจเป็นตัวอย่างของคนดัง

แม้ว่าฉันจะรู้ว่าการเขียนโปรแกรมบรรทัดคำสั่งเป็นพื้นฐานที่เปลือยเปล่า แต่ฉันคิดว่ามันคงจะสนุกเมื่อใช้ GUI

แม้ว่าฉันจะมีคำถามอื่นอีกประมาณ 3 ล้านคำถาม แต่ฉันก็จะบันทึกไว้: D


1
บรรทัดสุดท้ายทำให้ฉันยิ้ม :) +1 สำหรับสิ่งนั้น
CyprUS

คำตอบ:


28

ฉันกำลัง generalizing มากกว่าคู่ของห้องสมุด GUI แต่ในระดับที่สูงมากแนวคิดที่สำคัญที่สุดที่คุณต้องเข้าใจคือว่า GUI เป็นเหตุการณ์ที่ขับเคลื่อนด้วย

ในแอปพลิเคชันคอนโซลอินพุตของผู้ใช้มักจะเกิดขึ้นในบางจุดที่คุณกำหนดไว้ คุณให้ผู้ใช้ของคุณคุณรอการป้อนข้อมูลของเขาคุณจะคำนวณบางสิ่งตามข้อมูลนั้น หนึ่งในความแตกต่างหลักก็คือการป้อนข้อมูลที่เกิดขึ้นเฉพาะในหนึ่งข้อความสถานที่ที่คุณกำลังอ่านจาก commandline นี้ ( stdinใน C ++)

ในแอปพลิเคชัน GUI คุณมักจะมีหลายที่ที่อาจเกิดอินพุตได้ตัวอย่างเช่นปุ่มที่ทำงานต่าง ๆ หรือฟิลด์ข้อความ นี่คือเหตุการณ์ที่เกิดขึ้นมาเล่น ตัวอย่างเช่นการคลิกที่ปุ่มจะทำให้เกิดเหตุการณ์ เหตุการณ์นี้ต้องได้รับการจัดการโดยตัวจัดการเหตุการณ์ซึ่งโดยปกติแล้วจะเป็นเพียงวิธีการที่จะทำให้วัตถุของเหตุการณ์ถูกเรียกใช้เมื่อมีการเรียกใช้งานคู่ ปุ่มของคุณรู้เกี่ยวกับตัวจัดการเหตุการณ์อย่างไร คุณมักจะสมัครสมาชิก (หรือฟัง )

นี่คือตัวอย่าง "C ++ Inspiration" นี่ไม่ใช่รหัส 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: ช่วงเวลาสั้น ๆ เมื่อเริ่มต้นโดยที่วัตถุทั้งหมดจะถูกสร้างและเชื่อมต่อซึ่งกันและกัน
  • ห่วงเหตุการณ์ : GUI ของคุณอยู่ในขนาดใหญ่ในขณะที่ห่วงและเป็นเพียงการนั่งอยู่ที่นั่นไม่ทำงานจนกว่าเหตุการณ์จะถูกเรียก

นี่เป็นตัวอย่างที่ง่ายมาก แต่ฉันอยากจะแนะนำให้ใช้กรอบใดก็ตามที่คุณหยิบขึ้นมาคุณลองแสดงกล่องข้อความเมื่อคลิกปุ่ม

สำหรับเฟรมเวิร์กนั้นมีอยู่มากมายที่นั่น: ในกรณีของ C ++ ฉันอาจจะแนะนำ Qt

คำแนะนำสุดท้ายสุดท้าย: อยู่ห่างจากผู้ออกแบบ GUI จนกว่าคุณจะรู้ว่าเกิดอะไรขึ้นในพื้นหลัง มันไม่ยากที่จะเขียนตัวอย่างง่ายๆและเข้าใจห่วงเหตุการณ์ก่อนแล้วจึงเลื่อนไปยังเค้าโครงที่ซับซ้อนยิ่งขึ้น


ถ้าคุณเพิ่มเซมิโคลอนที่ส่วนท้ายของนิยามคลาสและทำให้การสืบทอดเป็นสาธารณะจะเป็นไวยากรณ์ C ++ ที่เหมาะสม / เป็นไปได้
Lstor

1
เสร็จสิ้น แต่ฉันไม่ต้องการที่จะเพิ่มความคาดหวังที่ผิดพลาดเนื่องจากรหัสจะไม่สามารถเรียกใช้หลังจากทั้งหมด ประสบการณ์ส่วนใหญ่ของฉันอยู่ในการแกว่งซึ่งอาจสะท้อนในชื่อคลาส แนวคิดเดียวกันจะถูกเรียกแตกต่างกันในกรอบที่แตกต่างกัน
sebastiangeiger

1
+1 นี่เป็นคำตอบเดียวที่ตอบคำถาม (สำหรับฉันดูเหมือนว่าเขาไม่ได้ถามเฉพาะเกี่ยวกับกรอบเขาถามเกี่ยวกับแนวคิดทั่วไป)
Federico klez Culloca

1
Ewwww .... อึผู้ฟังน่าเกลียด
DeadMG

7

ตอนนี้เป็นเวลาที่ดีเช่นเคยที่จะเรียนรู้ GUI porgramming ตามที่คุณรู้จัก C ++ ฉันขอแนะนำให้ดูที่ QT เอกสารที่ยอดเยี่ยมฐานผู้ใช้ขนาดใหญ่และตัวอย่าง / แบบฝึกหัดมากมายที่มีให้เรียนรู้


1
+1 สำหรับ Qt - @David - Qt มีสภาพแวดล้อมการพัฒนาของตัวเองที่เรียกว่า Qt Creator ซึ่งมีอยู่ในตัวเองฟรีและค่อนข้างง่ายเมื่อเทียบกับผู้อื่น Qt มีประสิทธิภาพใช้งานง่ายครอบคลุมกว้างขวางจัดทำเป็นเอกสารได้ดีและมีฐานผู้ใช้ขนาดใหญ่และใช้งานอยู่ มันง่ายในการเริ่มต้นและมีตัวอย่างมากมายที่จะเริ่มเล่นและทำสิ่งที่คุณทำเอง - ซึ่งเป็นวิธีที่ดีในการเรียนรู้โดยวิธีการ สามารถดาวน์โหลดได้ที่นี่
Roger Attrill

ฉันอยากลงคะแนนนี้ QT ส่งเสริมการปฏิบัติที่ไม่ดีจริงๆใน C ++ หากคุณไม่รู้ว่าต้องระวังอะไร - สิ่งที่คุณทำหลังจากเพียงหนึ่งเดือนของ C ++ นอกจากนี้ยังสัมผัสกับลักษณะที่ซับซ้อนบางอย่างใน C ++ ถ้าเป็นไปได้ฉันจะเริ่มเขียนโปรแกรม GUI ในภาษาอื่นก่อนแล้วจดจ่อกับการใช้ภาษา C ++
Konrad Rudolph

3

คุณอาจเริ่มด้วย Microsoft Visual Studio C ++ ด่วน IDE ที่เป็นมิตรมากและง่ายต่อการใช้งาน (และฟรี!) และคุณจะสามารถที่จะสร้างโปรแกรม GUI ครั้งแรกของคุณได้อย่างรวดเร็ว ... ซึ่งจะช่วยให้คุณมีสมาธิในการทำความเข้าใจพื้นฐานของการเขียนโปรแกรมเหตุการณ์ที่ขับเคลื่อนด้วยวิธีการที่แตกต่างกัน คุณจะต้องเชี่ยวชาญ

คุณอาจเริ่มต้นด้วยการสร้างแอพพลิเคชั่นที่ขับเคลื่อนด้วย WPF โดยตรง แต่ฉันจะเริ่มด้วย Windows Forms ในตอนแรกซึ่งเป็นเทคโนโลยีหนึ่งที่น้อยกว่าที่จะเข้าใจ


1
ใน VC ++ Express คุณสามารถเขียน GUI ด้วย: 1. Win32 API ซึ่งเก่ามากยุ่งยากและไร้สาระ 2. MFC ซึ่งเป็นกองเก่าของอึ 3 WTL ซึ่งดีกว่า แต่ไม่ข้ามแพลตฟอร์ม 4. C ++ / CLI ที่ไม่เป็นที่นิยมรองรับไม่ดี (แม้ไม่มีระบบ Intellisense) และซับซ้อนเกินไป Qt ง่ายขึ้นข้ามแพลตฟอร์มมีนักออกแบบ GUI ที่ดีและมีคลาสที่ไม่ใช่ GUI ที่มีประโยชน์ซึ่งมีความสำคัญมากใน C ++ พร้อมไลบรารีมาตรฐานขนาดเล็ก
Anton Barkovsky

0

อาจเหมาะสมกว่ากับ StackOverflow ที่ติดแท็ก c ++; แต่อย่างไรก็ตาม.

ดูสิ่งเหล่านี้บน google; Qt, WxWidgets, WinApi ของ TheForgers, Fltk ...

GUIs นั้นใช้งานยากโดยเฉพาะเมื่อคุณรู้จัก c ++ แล้ว ไปกับ WxWidgets ที่ฉันคิด; Qt นั้นซับซ้อนเกินไปสำหรับการเรียนรู้หนึ่งเดือน คุณสามารถรับ Wx ได้ภายในไม่กี่ชั่วโมง


-1

ผู้ใช้ไม่ชอบสิ่งที่ซับซ้อน Console เป็นสิ่งที่ซับซ้อนนั่นคือเหตุผลที่คุณต้องสร้างแอปพลิเคชั่น GUI ที่เป็นมิตรและเข้าใจง่าย นี่คือเหตุผลที่ชัดเจนที่สุดที่ฉันเห็น คุณสามารถดู gtk หรือ Qt - ทั้งสองอย่างนั้นเป็นที่นิยมที่สุด


2
CLI นั้นไม่ซับซ้อนและ GUI โดยนิยามนั้นซับซ้อนกว่าสำหรับผู้ใช้ พวกเขาเข้าถึงได้ง่ายไม่ซับซ้อนน้อยลง
Ominus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.