- use Signal & Slot
- 運用按鈕關閉視窗
在Qt之中,當某個元件發生狀態改變,而另一個元件想得知其狀態改變時,作出一些相對應行為的話,可以使用Signal與Slot的機制來達到。
Signal與Slot之間,可透過QObject的靜態方法connect來連結,Signal與Slot之間的處理是同步的(Synchronized)。
#include <QApplication>
#include <QPushButton>
#include <QFont>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QPushButton *btn = new QPushButton("Close");
btn->setWindowTitle("Signal & Slot");
btn->setFont(QFont("Courier", 18, QFont::Bold));
btn->resize(200, 50);
QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(quit()));
btn->show();
return app.exec();
}
Notes:
QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(quit()));
- connect()方法的第一個參數是發出Signal的物件之位址,第三個參數是對Signal有反應動作的物件之位址。
- SIGNAL()與SLOT()為巨集函式,是語法的一部份,所傳入的Signal或Slot為沒有參數名稱的函式簽名(function signature)。
- 程式中btn與app並不知道彼此的存在,而是藉由connect()連接Signal與Slot,這降低了物件之間的耦合度。
本文參考自"良葛格:Qt4學習筆記"


0 意見:
張貼留言