我有一個關於Qt及其信號/插槽機制的問題。
我已經創建了一個自定義小部件,並且我創建了一個自定義SIGNAL
(ShowMessage)。該信號連接到SLOT
,它在我的主窗口的狀態欄中顯示消息(以及指定的超時)。強制Qt自定義信號立即被處理?
現在,我在我的課上有一個操作需要很長時間來執行,並且它阻止了用戶界面。我希望emit
我的信號在開始操作之前,當它結束時,emit
它再次更新狀態欄;是這樣的:
emit ShowMessage(message, timeout);
// Do the long operation
emit ShowMessage(newMessage, timeout);
但我的問題是,它似乎是Qt的等待,直到整個操作完成,並只更新與newMessage
狀態欄。
有沒有辦法以某種方式「強制」我的信號立即處理,因爲如果我想訴諸線程,那麼我的生活會變得更加複雜!
這個長期操作是什麼?爲什麼很難將其移至新線程? – thuga
你使用Qt :: DirectConnection連接嗎? - 這應確保您的信號已經立即處理完畢。如果不是,那麼你應該使用調試器來查看發生了什麼。我假設這一切都發生在同一個GUI線程? –
對不起,但我不明白'Qt :: DirectionConnection'的含義。我是Qt的新手,我將它用作OpenGL圖形的容器。 – Farzad