ฉันกำลัง 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 จนกว่าคุณจะรู้ว่าเกิดอะไรขึ้นในพื้นหลัง มันไม่ยากที่จะเขียนตัวอย่างง่ายๆและเข้าใจห่วงเหตุการณ์ก่อนแล้วจึงเลื่อนไปยังเค้าโครงที่ซับซ้อนยิ่งขึ้น