Qt訊號與槽

2022-06-05 12:15:11 字數 822 閱讀 8022

參考:《qt 5.9 c++開發指南》

訊號與槽(signal & slot)是qt程式設計的基礎,也是qt的一大創新。有了訊號與槽的程式設計機制,在qt中處理介面各個元件的互動操作時變得更加簡單和直觀。

訊號就是在特定情況下被發射的事件。gui程式設計的主要內容就是對介面上各元件的訊號的響應,只需要知道什麼情況下發射哪些訊號,合理地去響應和處理這些訊號就可以了。

槽就是對訊號響應的函式。槽函式與一般的c++函式一樣,可以定義在類的任何部分,可以具有任何引數,也可以被直接呼叫。槽函式與一般函式不同的是:槽函式可以和乙個訊號關聯,當訊號被發射時,關聯的槽函式被自動執行。使用訊號與槽機制可以比較容易地將訊號與響應**關聯起來。

訊號與槽關聯是用 qobject::connect() 函式實現的,其基本格式是:

//qobject是所有qt類的基類,在實際呼叫時可以忽略前面的限定符

qobject::connect(sender, signal(signal()), receiver, slot(slot()));

關於訊號與槽的使用,有以下規則需要注意:

乙個訊號可以連線多個槽

多個訊號可以連線同乙個槽

乙個訊號可以連線另外乙個訊號

這樣,當乙個訊號發射時,也會發射另外乙個訊號,實現某些特殊的功能

嚴格的情況下,訊號與槽的引數個數和型別需要一致,至少訊號的引數不能少於槽的引數;如果不匹配,會出現編譯錯誤或執行錯誤

在使用訊號與槽的類中,必須在類的定義中加入巨集q_object

當乙個訊號被發射時,與其關聯的槽函式通常被立即執行,只有當訊號關聯的所有槽函式執行完畢後,才會執行發射訊號處後面的**

qt 槽與訊號

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

QT訊號與槽

初學qt,覺得理解qt訊號與槽比較重要,qt很多時候都需要用到訊號和槽。發射訊號會觸發相對應的槽函式的執行。乙個訊號可以對應多個槽,多個訊號可以對應乙個槽。訊號和槽是通過connect這個方法進行建立聯絡的。qt中有些類會自帶有一些訊號和槽函式,當然訊號和槽函式也可以自己定義。下面來看下很簡單的 會...

Qt訊號與槽

訊號的定義必須在signals 保留字下,並且不需要實現 槽的定義必須在slots 保留字下,需要實現 訊號和槽通過qobject connect函式連線 當訊號被觸發時,槽函式被呼叫 需要注意的是 訊號和槽是qt的拓展,所以實現訊號和槽的類,必須是qobject的子類 實現訊號和槽的類,必須以巨集...