我的應用程序中有一個工作線程,偶爾會收到應該快速顯示在QML UI中的信息。當我有這樣的信息部分時,我發出信號,這是由UI線程上的對象接收的。Qt信號到達UI線程明顯延遲
我希望這個過程能夠非常快速地響應,以便儘可能快地在QML UI中顯示更改(這很重要,因爲工作線程處理外部控制器,並且我希望用戶與控制器交互的最短「關鍵路徑」 UI更改)。
但是我發現,emit signal()
和在UI線程中調用的槽之間的時間差總是20-40毫秒。爲什麼這樣?
我能做些什麼來加速這個?信號發射後我在工作線程中嘗試調用QCoreApplication::processEvents()
,但這幾乎沒有改變任何東西。
的幾點思考:
- 我可以打電話
processEvents
但不知何故UI線程? - 使用具有高優先級的事件代替信號。它會有幫助嗎?
OS:Win8.1,Qt的5.5
QCoreApplication :: processEvents用於UI線程的事件循環。發佈更多關於信號連接,插槽處理程序,UI運行循環的代碼。 – hiitiger
鑑於QML以刷新率刷新,您將在60Hz刷新率下有16.6ms的延遲*無論如何*。 20ms的延遲是正常的,40ms的延遲也是錯誤的。你的用戶無論如何都說不清,那麼問題是什麼。你想做什麼?順便說一句,'processEvents'幾乎不需要任何正確書寫的代碼。你絕對*不需要它。 –