1. 程式人生 > 實用技巧 >訊號與槽的連線方式

訊號與槽的連線方式

本篇部落格將深入討論訊號與槽,重點討論訊號與槽的連線方式。訊號與槽的連線方式還有什麼值得我們注意的地方嗎?
之前是如何連線訊號與槽的呢?
通過connect函式將指定的訊號連線到指定的槽函式上面,接下來將要發生的事情就是訊號一旦被髮射,相應的槽函式就會被呼叫。這是我們最直觀的認識。
每次呼叫connect函式時,都省略了這個函式的第5個引數,使我們誤以為connect函式就只有4個引數。connect函式其實有5個引數,最後一個引數就是指定訊號與槽的連線方式。然而,訊號與槽的連線方式也是Qt中多執行緒程式設計的難點之一了。

深入訊號與槽的連線方式
-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::ConnectType type = Qt::AutoConnection);

訊號與槽的連線方式決定槽函式呼叫時的相關行為。

知識回顧
-每一個執行緒都有自己的事件佇列(一定要熟記,Qt中的每一個執行緒都有自己的事件佇列)
-執行緒通過事件佇列接收訊號
-訊號在事件迴圈中被處理