ตัวอย่างต่อไปนี้เป็นการเขียนโปรแกรมด้วยภาษา C++ โดยใช้ Qt library. ในระบบที่ต้องการลองต้องมี Qt library 3.x อยู่. ถ้าเป็น Gentoo ก็ติดตั้ง Qt ได้ด้วยคำสั่ง emerge.
# USE=doc emerge qtอันนี้ใช้ USE=doc เพื่อที่จะติดตั้งเอกสารด้วย.
โปรแกรมตัวอย่าง Hello Qt
โปรแกรมตัวอย่างใช้บรรณาธิกรณ์อะไรเขียนก็ได้. ให้มีชื่อเป็น hello.cpp แล้วเก็บไว้ในไดเรกทอรีที่ชื่อ hello ครับ.
1 #include <qapplication.h>
2 #include <qpushbutton.h>
3
4 int main( int argc, char* argv[])
5 {
6 QApplication app(argc, argv);
7 QPushButton *button = new QPushButton("Hello Qt!", 0);
8 button->show();
9 app.setMainWidget( button);
10 button->connect( button, SIGNAL(clicked()), button, SLOT(close()));
11 app.exec();
12 }
อธิบายทีละบรรทัดเลยแล้วกัน. บรรทัดที่ 1 เป็นไฟล์ header สำหรับการสร้าง Qt application. ส่วนบรรทัดที่สองเป็นไฟล์ header สำหรับใช้วิดเจด (widget) QPushButton.
บรรทัดที่ 4 เริ่มฟังก์ชัน main เหมือนโปรแกรม C/C++ ทั่วไป. บรรทัดที่ 6 สร้าง instance ของ QApplication ชื่อโดยใส่อาร์กิวเมนต์เป็น argc และ argv. คลาส QApplication จะเป็นตัวจัดการควบคุมโปรแกรม.
บรรทัดที่ 7 สร้าง QPushButton คือปุ่มกด. Constructor ของคลาสนี้มีหลายแบบ. ในที่นี้จะตั้งค่าสายอักษรที่จะแสดงบนปุ่ม (Hello Qt!), ตัววิดเจดพ่อแม่ (parent widget) และ ชื่อวิดเจด. ตรง panrent widget เป็น 0 หมายถึงปุ่มนี้ไม่ได้อยู่ในวิดเจดอื่น. เสร็จแล้วเรียก method show() ในบรรทัดที่ 8.
ในบรรทัดที่ 9 ใช้ app จัดการตั้งวิดเจดหลักด้วยฟังก์ชัน setMainWidget( button). บรรทัดที่ 10 เป็นการเขื่อม signal กับ slot ด้วยฟังก์ชัน connect ที่กำหนดไว้ในคลาส QObject. QPushButton สืบทอดมาจาก QWidget เลยมีฟังก์ชันนี้ด้วย. ฟังก์ชัน connect มีรูปแบบเป็น
connect(ในตัวอย่างเป็นการส่ง signal ชื่อ clicked() โดยปุ่ม button หาตัวเองโดยต่อกับ slot ชื่อ close(). ในความเป็นจริงแล้ว Slot ก็คือ method ของคลาสนั้น. ชื่อ signal และ slot ต้องเขียนในแมคโคร (macro) SIGNAL() และ SLOT(). moc (meta-object compiler) จะเป็นตัวจัดการแปลงเป็นไวยกรณ์ C++ มาตรฐานให้ภายหลัง.sender , SIGNAL(signal ),receiver , SLOT(slot ));
บรรทัดที่ 11 เป็นบรรทัดสุดท้ายสั่งให้โปรแกรมวน loop. ถ้ามีการกดปุ่ม, ตัวปุ่มซึ่งเป็นวิดเจดหลักจะรับสัญญาณแล้วปิด (close) ตัวเองทำให้โปรแกรมจบการทำงาน.
ลองคอมไพล์
คราวนี้เรียกว่า Qt way เป็นวิธีที่ Qt ใช้คอมไพล์โปรแกรมตามตัวอย่างต่อไปนี้.$ pwd /home/poonlap/qt/hello $ ls hello.cpp $ qmake -project $ ls hello.cpp hello.pro $ qmake hello.pro $ ls Makefile hello.cpp hello.pro $ make g++ -c -pipe -Wall -W -O3 -march=pentium4 -fprefetch-loop-arrays -pipe -DQT_NO_DEBUG -I/usr/qt/3/mkspecs/linux-g++ -I. -I. -I/usr/qt/3/include -o hello.o hello.cpp g++ -Wl,-rpath,/usr/qt/3/lib -o hello hello.o -L/usr/qt/3/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm $ ls Makefile hello* hello.cpp hello.o hello.proคำสั่ง qmake เป็นคำสั่งสำหรับสร้างไฟล์ project (.pro) สร้าง Makefile. พอได้ Makefile แล้วก็สร้างโปรแกรมได้. รันแล้วจะได้ผลเหมือนในรูป. ว่างๆกฌดูเนื้อหาไฟล์ .pro และ Makefile ที่สร้างด้วยแล้วกันว่าเป็นอย่างไร.
หลังจากที่กดปุ่มแล้วก็จะจบการทำงาน.

ระหว่างที่เดินมาทำงานนึกถึงหนังสือ (คอมพิวเตอร์) ต่างๆที่เคยอ่านในอดีตว่าเราก็อ่านหนังสือคอมพิวเตอร์ต่างๆมาเยอะ, ลองมาทบทวนดูว่ามีหนังสืออะไรที่เคยอ่านแล้วมีอิทธิพลกับเราบ้างในวันนี้.
