2013-04-17 95 views
0

我的Qt表單有一張表和一些標籤。表格內容和標籤內容變化很快,有時似乎表格被卡住了。但是,當我最小化表單並再次最大化時,會顯示最新值。有關解決此問題的任何建議。刷新Qt表單 - 似乎卡住了

+0

「快速」有多快?每秒一次?每秒10次?每秒1000000次? – 2013-04-17 14:21:22

+0

每秒數千次 – Rajeshwar

回答

1

我的建議是chaning項目後,使用repaint()

通過調用的paintEvent直接重繪控件()立即, 除非更新被禁用或小部件是隱藏的。

如果需要立即重新繪製,我們建議只使用repaint(),對於動畫過程中的 示例。在幾乎所有情況下,update()更好地爲 ,因爲它允許Qt優化速度並使閃爍最小化。

您可以將信號連接到該小部件,而不是直接呼叫,因爲repaint()是一個插槽。

4

不要每秒更新用戶界面數千次。您在顯示屏上看到的圖像通常每秒只更新60次。如果你有CRT顯示器,刷新頻率可能是50Hz - 120Hz,但在大多數情況下,刷新頻率是60Hz。

絕對不需要更新標籤內容的頻率比顯示器的刷新頻率更高。內容從未被看見。但更新用戶界面小部件非常昂貴,因此預計該窗口似乎被凍結。你正在做很多不必要的工作。

每次數據更改時都不要更新小部件。使用timer來更新小部件。計時器間隔爲16毫秒錶示小部件每秒更新約60次。但即使更慢的更新率也可能足夠好。

0

我的水晶球建議您使用QTableWidget的自定義模型,但您的自定義模型不會正確發出dataChanged信號。您的帖子中沒有足夠的數據 - 您使用的是哪種「表格」,以及如何向其提供數據?

+0

我使用'setItem'向其提供數據,然後使用'setText'改變/更新數據 – Rajeshwar

0

完全同意Roku的答案。沒有必要以更快的速度更新用戶界面,然後用戶可以讀取它。我懷疑每秒更多2-3次的東西對更新有任何意義..好吧,如果您使用網格或其他視覺事物中的進度條等智能代表,您可以每秒增加5-10次..但仍然不是每秒執行1000次更新的網格點