Qt 筆記:訊號與槽的連線方式
阿新 • • 發佈:2018-12-14
深入訊號與槽的連線方式
-Qt::DirectConnection(立即呼叫)
-Qt::QueuedConnection(非同步呼叫)
-Qt::BlockingQueuedConnection(同步呼叫)
-Qt::AutoConnection(預設連線)
-Qt::UniqueConnection(單一連線)
bool connect(const QObject* sender, const char* signal, const QObject* receiver, const char* method, Qt::ConnectionType type = Qt::AutoConnection);
Qt::DirectConnection(立即呼叫)
-直接在傳送訊號的執行緒中呼叫槽函式,等價於槽函式的實時呼叫!
Qt::QueuedConnection(非同步呼叫)
-訊號傳送至目標執行緒的事件佇列,由目標執行緒處理;當前執行緒繼續向下執行!
Qt::BlockingQueuedConnection(同步呼叫)
-訊號傳送至目標執行緒的事件佇列,由目標執行緒處理;當前執行緒等待槽函式返回,之後繼續向下執行!
ps:目標執行緒和當前執行緒必須不同
Qt::AutoConnection(預設連線)
-根據傳送訊號與接收訊號物件的執行緒翻譯成DirectConnection,或者QueuedConnection。
-AutoConnection是connect函式第五個引數的預設值,也是工程中最常用的連線方式
Qt::UniqueConnection(單一連線)
·功能與AutoConnection相同,自動確定連線型別
·同一個訊號與同一個槽函式之間只有一個連線
ps:預設情況下,同一個訊號可以多次連線到同一個槽函式,多次連線意味著通過一個槽函式的多次呼叫
總結:
-訊號與槽的連線存在多種方式
-立即呼叫方式等價於槽函式的實時呼叫
-預設方式自動確定連線型別
-同步方式中的目標執行緒和當前執行緒必須不同
-單一連線方式確保同一個訊號與同一個槽之間只有一個連線