訊號與槽的連線方式
阿新 • • 發佈:2020-09-09
本篇部落格將深入討論訊號與槽,重點討論訊號與槽的連線方式。訊號與槽的連線方式還有什麼值得我們注意的地方嗎?
之前是如何連線訊號與槽的呢?
通過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中的每一個執行緒都有自己的事件佇列)
-執行緒通過事件佇列接收訊號
-訊號在事件迴圈中被處理