簡體   English   中英

Qt小部件在某些情況下無法重繪

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM