2015-05-20 20 views
0

出於某種原因,我不得不在我的程序開始或用戶使用過程中創建大量的QWidgets。 而且這將永遠導致主線程卡住幾秒鐘。 我如何提高創作速度?我是否應該使這些小部件更簡單(就像移除按鈕的像素圖並保持最低限度的功能?)如何高效地創建大量的QWidget?

+0

您是否將這些小部件添加到自身可見的小部件?這被稱爲是緩慢的。 –

+0

是的..任何可能的出路? – Nyaruko

+0

您可以在更改之前嘗試'setUpdatesEnabled(false)',然後重新啓用它們。 –

回答

2

沒有有效且簡單的方法來打破物理定律。很多UI元素==速度慢,沒有辦法繞過它。

解決方法:重新使用現有的UI元素以給出滾動的印象。因此,不需要創建10'000個UI元素來顯示一個包含10列和1 000行的表格,只需創建足夠的空間填充屏幕並在用戶滾動時移動數據 - 只是給出UI滾動的印象。這種方法是由屏幕空間有限的事實驅動的,通過添加您看不到的UI元素幾乎沒有什麼收穫。

另一種方法是一次只創建幾個元素,總是給UI線程之間的時間「批量」作出響應。對於這種方法,創建N個元素,然後添加一個計時器事件。當計時器觸發時,添加另外N個元素,等等,直到您創建足夠多的元素。

第二種方法的缺點是您的操作系統最終會殺死您,因爲資源有限。如果您創建100'000個UI元素,並且每個元素需要10 KB的RAM,那麼應用程序將爲用戶界面分配1 GB的RAM。

相關問題