QT的訊號與槽函式

2022-03-25 12:53:37 字數 1169 閱讀 2039

qt中通過訊號(signal)和槽函式(slot)將事件和響應函式連線起來(可以模擬mfc中的操作和對應的on開頭的響應函式).

它的優點在於訊號和槽函式是松耦合的關係,你可以通過connect將兩者連線起來,也可以通過disconnect將兩者斷開.

它們的格式如下:

connect/disconnect(訊號的傳送者, 具體的訊號, 訊號的接收者, 訊號的處理(槽)).
假如有這樣乙個需求:在下課的時候,老師說餓了,然後學生去請老師吃飯.

這樣對應到訊號和槽函式,如下所示:

設計的類圖如下所示:

在widget.cpp中有如下的**組織,其中討論了有無函式過載的情況下對應的實現;訊號連線訊號的用法;斷開連線;用lambda表示式來表示槽函式的方式.

#include "

widget.h

"#include

widget::widget(qwidget *parent)

: qwidget(parent)

();

//加上後面的()才能算是執行函式

///利用lambda表示式實現點選按鈕關閉視窗

connect(btn, &qpushbutton::clicked, this, [=]());

}widget::~widget()

void

widget::classisover()

void

widget::classisovernofoodname()

完整的**位置:

1.訊號是可以連線訊號
2.乙個訊號可以連線多個槽函式
3.多個訊號 可以連線 同乙個槽函式.
4.訊號和槽函式的引數 必須型別一一對應,就像訊號裡傳遞的是qstring型別的"宮保雞丁",那麼槽函式裡也要用qstring型別的foodname來接收.
5.訊號的引數個數可以多於槽函式引數個數.比如上面的clicked原型是clicked(bool checked = false),它有乙個bool引數,作為它的槽函式要麼是乙個bool引數,要麼是沒有引數(即為void);

qt的訊號與槽函式

關聯 bool connect const?qobject?sender,const?char?signal,const qobject receiver,const char slot,qt connectiontype?type?qt autoconnection 1.乙個訊號 對應槽函式 co...

Qt訊號與槽connect 函式

qmetaobject connection qobject connect const qobject sender,傳送方物件 const char signal,傳送物件中的事件訊號 const qobject receiver,接收方物件 const char method,接收物件中的要執...

qt 槽與訊號

槽就是乙個可以被呼叫處理特定訊號的函式 乙個小的qt類如下 class foo public qobject public slots void setvalue int signals void valuechanged int private int val qt中的元物件系統是用來處理物件間通...