|
Qt อ่านว่า"คิ้ว" เป็นชุดพัฒนาโปรแกรมที่สามารถโปรแกรมได้หลายแพลตฟอร์ม นั่นหมายความว่าโปรแกรมที่พัฒนาด้วย Qt สามารถคอมไพล์ให้สามารถทำงานได้ทั้งบนระบบปฏิบัติการ Window, Linux, MAC เป็นต้น บทความนี้จะว่าด้วยการใช้งาน Qt ล้วนๆโดยขอละเรื่องการติดตั้ง (สามารถเข้าไปศึกษาวิธีการติดตั้งได้ที่http://www.picohosting.com/howto/qtinstall )
เริ่มต้นเราต้องเขาใจการสร้างการเขียนโปรแกรมด้วย Qt เสียก่อน 
จากซอร์สโค้ดข้างบนเรา include คลาสชื่อ QApplication ซึ่งจำเป็นสำหรับ Qt และคลาส QLabel สำหรับออบเจ็กลาเบลที่จะปรากฏในแอพพลิเคชั่นของเรา ในโปรแกรมหลัก main เราจะเริ่มต้นด้วยการสร้างออบเจ็ก app ซึ่งรับพารามิเตอร์ argc และ argv มาจาก main(int, char*) ซึ่งจะอนุญาติให้เราสามารถใส่พารามิเตอร์ในตอนที่เราเรียกโปรแกรมจากคอมมานด์ไลน์ หลังจากนั้นจึงสร้างออบเจ็กของลาเบลซึ่งจะแสดงข้อความ"Hello Qt!" บรรทัดที่ 7 จะเป็นการบอกว่าให้แสดงลาเบลบนApplication สำหรับบรรทัดที่ 8 เป็นการเรียก Application ให้ทำงานหรือแสดงบนวินโดว์จนกว่าเราจะกดปุ่ม close บนวินโดว์เพื่อออกจากโปรแกรม.... เห็นไหมครับว่า Qt ง่ายจริงๆ การคอมไพล์เร่มจากใช้คำสั่ง qmake -project เพื่อสร้าง project ขึ้นมาก่อน 
สังเกตว่าเราจะได้ไฟล์ hello.pro เพิ่มขึ้นมา หลังจากนั้นเราต้องสร้าง Makefile เพื่อให้สามารถใช้ GNU Make ได้ในการคอมไพล์และลิงค์ซอร์สโค้ด 
ซึ่งในที่สุดเราจะได้ Makefile ที่พร้อมจะเรียกใช้โดย GNU Make เมื่อมาถึงขั้นตอนนี้โปรแกรมของเราก็พร้อมจะถูกเรียกขึ้นมาทดสอบแล้วดังรูปข้างล่าง 
ในการตอบสนองเหตุการณ์ที่เกิดขึ้นบน Application (หรือเรียกว่า Event ใน Microsoft MFC) สำหรับ Qt ใช้ SIGNAL ในการส่งผ่าน Message ไปยังฟังชั่นที่เหมาะสม โดยอาศัย Function ชื่อ connect() ดังตัวอย่างข้างล่าง 
สังเกตุว่าฟังชั่น connect จะทำการเชื่อม Message ชื่อ clicked() บนอ๊อบเจ็ก botton ไปยังฟังชั่น quit() ของอ๊อบเจ็ก app ดังนั้นเมื่อรันโปรแกรมแล้วเรากดปุ่ม Quit ฟังชั่น quit() ก็ถูกเรียกมาทำงาน ในที่นี้คือให้ออกจากแอพพลิเคชั่น 
ใน Qt เราเรียกคอนโทรลต่างๆว่า Widget ซึ่ง Widget เองสามารถเป็นสมาชิคของแอพลิเคชั่นดังตัวอย่างที่ผ่านมา แต่ในทางปฏิบัติเราจะใช้คลาส QWidget เพื่อเป็น Widget หลักของแอพพลิเคชั่น คอนโทรลต่างจะถูกจัดรวมเข้ามาอยู่ใน QWidget ทั้งสิ้น โดยอาจมีคลาส QHBoxLayout หรือ QVBoxLayout ช่วยในการจัดวางคอนโทรลให้อยู่ในตำแหน่งที่เราต้องการ ดังตัวอย่างโค้ดข้างล่าง 
บรรทัดที่ 9 เป็นการสร้างอ๊อบเจ็ก window จากคลาส QWidget ซึ่งอ๊อบเจ็ก window จะเป็นหน้าต่างหลักของแอพพลิเคชั่นเสมอ หลังจากนั้นบรรทัดที่ 10 จะเป็นการแสดงข้อความบน title bar ของวินโดว์ บรรทัดที่ 11 และ 12 เป็นการสร้างอ๊อบเจ็กของ spin box และ slider bar ที่วางในแนวนอน ส่วนบรรทัด 13 และ 14 เป็นการตั้งค่าสูงสุดของ spin box และ slider bar ตามลำดับ บรรทัด 15 และ 16 เป็นการสร้าง SIGNAL และ SLOT เพื่อให้ Widget ทั้งสองเปลี่ยนค่าไปพร้อมๆกัน ส่วนบรรทัดที่ 17 เป็นการเซทค่าเริ่มต้นของ spin box บรรทัดที่ 18 เป็นการสร้างอ๊อบเจ็ก layout จากคลาส QHBoxLayout ซึ่ง Widget ใดๆที่ถูก add จะถูกแสดงผลในแนวนอนเรียงกันไป ดังบรรทัดที่ 19 และ 20 spin box จะถูกวางไว้ด้านซ้าบและตามมาด้วย slider bar ทางด้านขวา บรรทัดที่ 21 เป็นการเซท layout ให้เป็นสมาชิกของ window หรือหน้าต่างหลักนั่นเอง เมื่อ build และ run โปรแกรมนี้จะได้ผลดังรูปข้างล่าง 
|