QT中訊號和槽的簡單解釋

2021-10-02 15:11:18 字數 710 閱讀 1443

思想介紹為:

一.訊號

當物件的內部狀態發生改變,訊號就被發射。只有定義了乙個訊號的類和它的子類才能發射這個訊號。

訊號的宣告是在標頭檔案中進行的,qt的signals關鍵字指出進入了訊號宣告區,隨後即可宣告自己的訊號。訊號由moc自動生成,所以不需要在cpp中定義,只需要宣告。

二.槽槽是普通的 c++ 成員函式,可以被正常呼叫,它們唯一的特殊性就是很多訊號可以與其相關聯。當與其關聯的訊號被發射時,這個槽就會被呼叫。槽可以有引數,但槽的引數不能有預設值。

槽函式分為三種型別,即 public slots、private slots 和 protected slots。

public slots:在這個區內宣告的槽意味著任何物件都可將訊號與之相連線。

protected slots:在這個區內宣告的槽意味著當前類及其子類可以將訊號與之相連線。

private slots:在這個區內宣告的槽意味著只有類自己可以將訊號與之相連線。

三.訊號與槽的使用

通過呼叫connect 函式來將某個物件的訊號與另外乙個物件的槽函式相關聯,這樣當發射者發射訊號時,接收者的槽函式將被呼叫。

1)乙個訊號可以連線到多個槽。

2)乙個槽可以被多個訊號連線。

3)訊號也可以連線到訊號,此時前者的發射訊號將導致後者的發射。

4)訊號的引數型別可以與槽的引數型別對應,訊號的引數可以比槽的引數多,但不可以少,否則連線將失敗。

訊號槽QT中訊號和槽淺淺淡淡

時間緊張,先記一筆,後續優化與完善。全部從 qobject 或其子類 例如 qwidget 派生的類都夠能包括訊號和槽。當物件變改其態狀時,訊號就由該物件發射 emit 出去,這就是物件所要做的部全情事,它不曉得另一端是誰在接收這個訊號。這就是真正的資訊封裝,它確保物件被作當乙個真正的軟體元件來應用...

Qt中訊號槽的概念

qt中訊號槽的概念 發表日期 2010 11 24 訊號槽是qt中特有的概念。它使得程式設計師將不同的object繫結起來,而object物件間並不需要對相互了解。slots也是普通的c 方法,它們可以是virtual 可以被過載 可以使private protected public,可以像其它c...

Qt訊號和槽

qt將訊號和槽關聯起來的connect使用時需要注意帶相應的引數,否則會出現訊號發出後不能呼叫槽的問題,例子如下 發出訊號的宣告 signals void receiveddata uchar dat,uint len 接收訊號的槽宣告 private slots void getdata ucha...