1. 程式人生 > >操作UI控制元件的函式必須利用訊號-槽觸發

操作UI控制元件的函式必須利用訊號-槽觸發

如果函式所實現的業務和UI有關,那麼其必須執行在UI執行緒中,此時必須採用訊號-槽的機制,使得要操作UI的槽函式,被系統自動執行在UI執行緒中。這種情況下,不可以在訊號發射處,直接呼叫槽函式。

如果在程式碼正確的情況下,出現發射訊號後,槽函式不被觸發的情況,很可能同時由於connect的第5個引數設定有問題。

AutoConnection:根絕接收者和發出者是否在同一個執行緒,決定是DirectConnection(同一個執行緒),或者QueuedConnection(非同一個執行緒)。

DirectConnection:此時槽函式立即被觸發,發出者和接收者在同一個執行緒。

QueuedConnection:當事件迴圈回到接收者所線上程時,槽函式才被觸發,發出者和接收者不在同一個執行緒。

BlockingQueuedConnection:和QueuedConnection大差不差,區別在於發出者會在訊號處停止先來,等待接收者執行完槽函式,之後再繼續執行。如果發出者和接收者在同一執行緒,那麼此執行緒在發射訊號處,死鎖。

UniqueConnection:可以通過或運算子與上述幾個flag同時使用。如果已經利用此flag進行過connect操作,那麼再次connect時將失敗。