信號與槽的機制signal and slot是QT最重要的特性,提供了任一兩個QT對象之間的通信機制。其中,信號會在某個特定的情況下或是動作下被觸發,槽是用予接收並處理信號的函數。例如,要將一個視窗中的變化情況通知另一個視窗,則一個視窗要發出信號,另一個視窗就必須要接收這個信號並產生相對應的動作,便可以實現這兩個窗口之間的通信。這比傳統的圖形化程式採用的回調函數的方式實現對象間通信要來的簡單靈活的多。每個QT對象都包含了預定的信號與槽,當某個特定事件發生時,一個信號被發射,與信號相關連的槽則會響應信號完成相應的處理。
信號與槽機制常用的連接方式為:
connect( Object1, SIGNAL(signal), Object2, SLOT(slot));
signal為對象Object1的信號,slot為對象 object2的槽,QT的視窗原件都包含若干個預定義的信號和若干個預定義的槽。當一個類被繼承時,該類的信號和槽也同時被繼承。開發人員以可以根據需要自定義自己的信號跟槽。
信號與槽有多種連接方式:
一個信號可以與另一個信號相連接
connect( Object1, SIGNAL(signal), Object2, SIGNAL(signal));
一個信號可以跟很多個槽相連
connect( Object1, SIGNAL(signal), Object2, SLOT(slot));
connect( Object1, SIGNAL(signal), Object3, SLOT(slot));
一個槽可以響應多個信號
connect( Object1, SIGNAL(signal), Object2, SLOT(slot));
connect( Object3, SIGNAL(signal), Object2, SLOT(slot));
No comments:
Post a Comment