錨接(Make Connection)
第二個例子將會說明如何響應(yīng)用戶操作。程序的界面由一個按鈕組成,用戶在單擊這個按鈕之后將會退出該程序。源代碼跟上一個例程Hello非常相似,區(qū)別在于這回我們用QPushButton代替QLabel作為主器件,并且我們將用一段代碼把用戶操作(單擊鼠標(biāo))和響應(yīng)函數(shù)聯(lián)系起來。
下面是源代碼quit.cpp的內(nèi)容:
1
#include <QApplication>
2
#include <QPushButton>
3
int main(int argc, char *argv[])
4

{
5
QApplication app(argc, argv);
6
QPushButton *button = new QPushButton("Quit");
7
QObject::connect(button, SIGNAL(clicked()),
8
&app, SLOT(quit()));
9
button->show();
10
return app.exec();
11
}

2

3

4



5

6

7

8

9

10

11

當(dāng)Qt器件接收到用戶操作或狀態(tài)發(fā)生改變時將會發(fā)出信號。例如QPushButton在被單擊后產(chǎn)生一個clicked()信號。一個信號可以與一個函數(shù)(Qt中叫做“槽”(slot))進行錨接,當(dāng)一個信號產(chǎn)生時,與其錨接的槽也會被自動執(zhí)行。在該例子中,我們把按鈕的clicked()信號與QApplication對象的quit()槽錨接。SIGNAL()和SLOT()是Qt的宏,我們將會在下一章詳細(xì)介紹。
[*]需要注意的是Qt的信號(signal)跟Unix中的信號含義不同,本書中只討論Qt的信號。
圖1.3,包含一個退出按鈕的應(yīng)用程序

現(xiàn)在創(chuàng)建工程并編譯程序:
qmake -project
qmake quit.cpp
然后編譯并運行程序,結(jié)果如圖1.3。