QT槽函式使用方法
在Qt Creater中提供了三種建立訊號和槽的方法,詳細介紹如下:
實現功能:點選OK按鈕,TextLabel顯示“Hello World”
詳細過程:
首先,執行Qt Creater,建立Qt Gui application工程。
其次,在點選.ui檔案,在控制元件欄選擇“pushButton”和“TextLabel”控制元件。設計介面如下圖:
最後,是選擇3種建立訊號和槽的方法,具體如下:
第一種方法:
1)在標頭檔案mainwindow.h的類MainWindow的定義中宣告槽函式,程式碼如下:
[objc] view plain copy print?- public slots
- void on_pushButton_clicked();
public slots:
void on_pushButton_clicked();
2)在mainwindow.cpp檔案中,定義槽函式,程式碼如下:
[objc] view plain copy print?- void MainWindow::on_pushButton_clicked()
- {
- ui->label->setText(”Hello World”);
- }
3)建立對映,在類MainWindow的建構函式中新增如下語句,以便將訊號和槽函式進行連線: [objc] view plain copy print?void MainWindow::on_pushButton_clicked() { ui->label->setText("Hello World"); }
- connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked)));
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked)));
connect()函式的原型為:
#include < QObject>
static bool QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member);
sender和receiver分別指定了被關聯的訊號和槽的傳送者和接受者,signal是訊號,Qt要求必須使用巨集SINGAL將訊號函式指標轉化為指定的型別。member是槽函式,Qt要求必須使用巨集SLOT轉換函式指標。巨集SIGNAL和巨集SLOT的引數形式如下:SIGNAL(funname(param_type1,param_type2…)、SLOT(funname(param_type1,param_type2)
funname是函式名,param_typex是函式中的引數型別。
4)編譯執行即可。
第二種方法:
右擊“OK”按鈕,選擇“Go to slot…”,選擇clicked(),單擊OK,即完成訊號和槽函式的連結。clicked是訊號函式,槽函式是on_pushButton_clicked();
在自動生成的槽函式on_pushButton_clicked()中重複第一種方法的步驟2即可,編譯、執行。
第三種方法:
1)右擊介面選擇“change signals/slot”(改變訊號/槽)選項,單擊“+”,新增新的槽函式,如圖。單擊“OK”,完成槽函式的新增。
2)在窗體編輯區的下方有訊號和槽的對映視窗,單擊做上角的加號,出現一行新的對映,在這裡編輯對映函式。結果如下圖:
3)重複第一種方法的第1、第2步,完成槽函式的宣告和定義。
4)編譯執行。
最終效果如下:
點選OK按鈕即可列印“Hello World”