1. 程式人生 > >Qt入門-connect, SIGNAL, SLOT

Qt入門-connect, SIGNAL, SLOT

在QT中,事件處理訊號叫做SIGNAL,事件處理函式叫做SLOT,兩者關聯函式是QOjbect::connect。

示例:

connect(sender, SIGNAL(signal), receiver, SLOT(slot));


sender: 指觸發的控制元件。

signel:sender中定義的訊號。

receiver:可以是一個類。

slot: 在類中定義的處理函式。

在類中定義slot的方法如下:

class PushBtn : public QPushButton
{
	Q_OBJECT

public:
	...

private slots:        //將事件處理函式放在此關鍵字下
	void slot_fun();
        ...

};


 注意此類的定義須在標頭檔案中,否則編譯時會報錯:

error LNK2001: 無法解析的外部符號 ...

另外,QT庫的類內部定義的許多solt,我們可以直接使用。

如按下一個按鍵時退出:

 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 }