訊號(signal)是在特定情況下被發射的事件。gui程式的主要內容就是對介面上各元件的訊號的響應,只需要知道什麼情況下發射哪些訊號,合理地去響應和處理這些訊號就可以了。
槽(slot)是對訊號響應的函式。槽就是乙個函式,與一般的c++函式是一樣的,可以定義在類的任何部分,可以具有任何引數,也可以被直接呼叫。槽函式與一般的函式不同的是:槽函式可以與乙個訊號關聯,當訊號被發射時,關聯的槽函式被自動執行。
訊號與槽關聯是用qobject::connect()函式實現的,基本格式:
qobject::connect(sender,signal(signal()),receiver,slot(slot()));
其中,sender是發射訊號的物件的名稱,signal()是訊號名稱,receiver是接收訊號的物件名稱,slot是槽函式的名稱。
使用規則
1、乙個訊號可以連線多個槽。
2、多個訊號可以連線同乙個槽。
3、乙個訊號可以連線另外乙個訊號。
4、嚴格的情況下,訊號與槽的引數個數和型別需要一致,至少訊號的引數不能少於槽的引數。如果不匹配,會出現編譯錯誤或執行錯誤。
5、在使用訊號與槽的類中,必須在類的定義中加入巨集q_object
6、當乙個訊號被發射時,與其關聯的槽函式通常被立即執行,就像正常呼叫乙個函式一樣。只有當訊號關聯的所有槽函式執行完畢後,才會執行發射訊號處後面的**。
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的子類 實現訊號和槽的類,必須以巨集...