Qt 最引以為傲的 信號槽機制:像插頭與插座。事件發生(點擊、按鍵)→ 元件發出信號(廣播)→ 對應槽自動執行(回呼)。
#include <QtGui/QApplication>
#include <QtGui/QPushButton>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QPushButton *button = new QPushButton("Quit");
QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit()));
button->show();
return a.exec();
}
QObject::connect(button, SIGNAL(clicked()), &a, SLOT(quit()));
QObject:所有類別根,提供單根繼承體系connect():靜態函式連接信號槽clicked():按鈕被點擊時發出的信號quit():QApplication 的槽函式,退出事件循環按鈕點擊 → 發出 clicked() → QApplication 執行 quit() → 程式退出。
SIGNAL/SLOT 為 Qt 擴展關鍵字(IDE 高亮),需 qmake 預處理signal 無關,僅名稱相同信號槽是 Qt 核心,後續將深入探討。