QT5信號和槽機制(新手日記)

  信號和槽是 Qt 編程的一個重要部分。

  槽和普通的 c++成員函數很像。它們可以是虛函數(virtual),也可被重載(overload),可

以是公有的(public ),保護的( protective ),也可是私有的( private ),它們可以象任何 c++成員函數一樣被調用,可以傳遞任何類型的參數。不同在於一個槽函數能和一個信號相連接,只

要信號發出了,這個槽函數就會自動被調用。

connect 函數語法如下:

connect(Obeject1, SIGNAL(signal), Obeject2, SLOT(slot));

Object1 和 Obeject2 是 QObject 對象指針, signal 和 slot 是不帶參數的函數原型。 SIGNALE()

和 SLOT()宏的作用是把他們轉換成字符串。

信號與槽的連接方式:

1、一個信號可以和另一個信號相連

connect(Obeject1, SIGNAL(signal1),Obeject2, SIGNAL(signal1);

表示信號1發射可以觸發信號2發射。

2、一個信號可以連接到多個槽:

connect(Obeject1, SIGNAL(signal2),Obeject2, SLOT(slot2);

connect(Obeject1, SIGNAL(signal2),Obeject3,SLOT(slot1);

當信號發出後,槽函數都會被調用,但是調用的順序是隨機的,不確定的。

3、多個信號可以連接到一個槽

connect(Obeject1, SIGNAL(signal2), Obeject2, SLOT(slot2);

connect(Obeject3, SIGNAL(signal2),Obeject2, SLOT(slot2);

任何一個信號發出,槽函數都會執行。

4、連接可以被刪除

disconnect(Object1, SIGNAL(signal1),Obeject2, SLOT(slot);

這個函數很少使用,一個對象刪除後,Qt 自動刪除這個對象的所有連接。

信號和槽函數必須有着相同的參數類型,這樣信號和槽函數才能成功連接:

connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this,SLOT(proce***eply(int,const QString &)));

如果信號裏的參數個數多於槽函數的參數,多餘的參數被忽略。

注意:Qt信號和槽機制不支持對模板的使用


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章