[英]Qt widget failing to repaint under certain conditions
我遇到了一個奇怪的問題,即小部件長時間無法重繪。
我有一個非Qt線程播放音頻,並根據音頻播放位置定期將自定義事件發布到我的GUI線程。 GUI線程通過生成一些視覺反饋(例如,在小部件頂部顯示標簽)並在其自身上調用repaint()做出反應。 這在Mac OSX上效果很好,並且在我具有在Windows(XP&7)上行使功能的單元測試應用程序中也能正常工作,但是,直到Windows XP / 7上的小部件在我的實際應用程序中無法正確重繪。音頻播放完成。
在OSX和我的單元測試中觀察到正確的行為:
-> Custom Event
-> QEvent::Paint (12)
-> Custom Event
-> QEvent::Paint (12)
etc.
在我的實際應用中觀察到錯誤的行為:
-> Custom Event
-> QEvent::UpdateRequest (77)
-> Custom Event
-> QEvent::UpdateRequest (77)
etc.
-> QEvent::Paint (12)
我已經嘗試了各種方法來強制重新繪制,例如QCoreApplication :: processEvents,但都無濟於事。 我也曾嘗試消除線程間事件作為罪魁禍首,並使用定期計時器從GUI線程中輪詢當前音頻位置並更新窗口小部件,也沒有太多運氣。
任何關於如何進一步診斷這一點的想法將不勝感激!
您是否嘗試過直接調用paint事件處理程序? 即paintEvent(NULL)
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.