Qt提供了訊號槽機制用於完成介面響應的操作,是完成任意兩個Qt物件的通訊機制。
其中,訊號在某個特定情況或動作下被觸發,槽是等同於接收並處理訊號的函式。
例如,若要將一個視窗部件的變化情況通知給另一個視窗部件,則一個視窗部件傳送訊號,
另一個視窗部件的槽接收此訊號並進行相應的操作,就可以實現兩個視窗之間的通訊.
訊號與槽機制的連線方式:
1.一個訊號與另一個訊號連線:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));
表示Object1的訊號1傳送可以觸發Object2的訊號1傳送
2.同一個訊號可以與多個槽連線:
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slots2));
connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slots1));
3.同一個槽可以響應多個訊號:
connect(Object1,SIGNAL(signal1),Object2,SIGNAL(slots2));
connect(Object3,SIGNAL(signal1),Object2,SIGNAL(slots2));
常用的連線方式:
connect(Object1,SIGNAL(signal1),Object2,SLOT(slots1));
siganl1為Object1的訊號,slots1為Object2的槽
訊號與槽機制的優點:
1.型別安全。需要關聯的訊號和槽的簽名必須是等同的,即訊號的引數型別和引數個數與接收該訊號的槽引數型別和
引數個數相同。
2.鬆散耦合。訊號和槽機制減弱了Qt物件的耦合度。激發訊號的Qt物件無需知道是那個物件的那個槽需要接收它發
出的訊號,它只需做的是,在適當的時間傳送適當的訊號就可以了。
一個類若要支援訊號與槽,就必須從QObject或QObject的子類繼承。Qt訊號和槽機制不支援對模板的使用。
訊號與槽機制的效率:
1.需要定位接收訊號的物件。
2.安全的遍歷所有的關聯(如果一個訊號關聯多個槽的情況)。
3.編組/解組傳遞的引數。
4.多執行緒的時候,訊號可能需要排隊等待。
写评论
很抱歉,必須登入網站才能發佈留言。