信號與槽是Qt中的核心,也是Qt的特有的。在Qt中信號與槽的關鍵字爲slots、signals、emit。
具體信號與槽將會在下一節中詳細說明,因爲擔心一些讀者在沒了解過槽與信號前直接講述過深導致門檻提高,閱讀困難,所以當前這一篇文將在不理解信號與槽的實現原理下,完成點擊按鈕並彈窗,感受信號與槽的使用。
創建一個Qt Widget項目,雙擊Forms下的mainwindow.ui,在彈出的UI 設計面板小部件選擇區域,拖拽Push Button 至窗體設計面板中:
拖拽完成後的界面如下:
右鍵 PushButton 選擇轉到槽:
之後彈出轉到槽面板,選擇QAstractButton下的clicked():
這時將會跳轉至一個方法中:
以上操作使按鈕綁定了一個方法,這個方法可以稱作爲槽,槽則是對信號響應的函數。槽可以使該函數與一個信號關聯,信號發射時,槽函數會響應,執行槽函數。
剛剛我們在槽面板下選擇的是QAstractButton下的clicked(),那麼clicked則是發送的信號。clicked是當該按鈕被點擊後發送的信號。
綜上所述,我們可以得知槽是一個函數,當一個信號發射時,將會執行綁定的槽。
我們可以在該槽函數中編寫某些代碼檢測是否在 PushButton被點擊時,該函數將會響應。
我們嘗試使用一個彈窗作爲槽函數的一個表現。可以在 mainwindow.cpp 文件的頭部,引入彈窗的頭文件:
#include <QMessageBox>
在槽函數中添加 QMessageBox 彈窗(QMessageBox爲彈窗),QMessageBox 的函數原型如下:
static StandardButton QMessageBox::information ( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton );
- parent:爲父部件 類型爲 QWidget
- title:爲彈窗標題 類型爲 QString
- text:爲顯示內容 類型爲 QString
- buttons :爲彈窗有一個默認的按鈕爲OK 如果想顯示一個OK和NO可以寫爲
QMessageBox::Yes | QMessageBox::No
類型爲 StandardButton - defaultButton:爲默認選中的按鈕 NoButton 則爲不選中 類型爲 StandardButton
有了以上說明,我們可以在槽函數中添加如下代碼(直接填入值不需要在參數裏面進行賦值):
QMessageBox::information(NULL, "這是標題", "@1_bit", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
以上代碼服部件爲NULL,標題值爲“這是標題”,內容爲“@_bit”,彈窗有2個按鈕,一個是Yes一個是No,默認選中Yes。
點擊運行查看效果:
可能讀者在設置顯示值時會出現編碼問題,導致顯示某些值錯誤,在後面的章節將會說明。
完整代碼截圖如下,紫色框選區域爲我添加的代碼: