我使用QTableView和QItemDelegate的子類來控制tableview單元格的外觀。高效更新QTableView高速更新
每個單元格顯示外部連接設備的名稱和狀態,一次最多可連接100個設備。
每個設備的名稱和類型基本都是靜態的,很少更新(可能每小時一次),但每個單元需要顯示設備輸入的實時值,目前我每50毫秒進行一次輪詢。該值顯示爲由TableView提供給Delegate :: paint()方法的畫家繪製的基本條形圖。
每秒更新我的模型20次的問題是整個表格每次都會重新繪製,這是非常低效的。將繪圖方法限制爲僅繪製條形圖顯示大多數CPU時間專用於繪製每個單元格上的名稱,狀態和關聯圖像,而不是圖形。
我需要找到的方法是定期更新每個單元格的圖形而不重繪單元格,但我無法弄清楚如何去做。
達到此目的的最有效方法是什麼?
編輯:圖像附加幫助。
圖像代表QTableView中的10個傳感器。數字,名稱和狀態幾乎是靜態的,幾乎不會更新。 「傳感器值」文本旁邊的條形圖每隔50ms更新一次。我只想畫這個欄,而不是文字,狀態和單元格背景。狀態燈和背景是複雜的圖像,因此比簡單繪製和填充矩形要花費更多的CPU時間。
該狀態是否需要與其他所有內容位於相同的小部件中?我的第一個想法是在同一個模型旁邊粘貼一個ListView。 – 2010-09-22 14:14:50
是的,不幸的是它。每個設備都有一些參數需要放在圖的旁邊。我確實想過有兩種觀點,可能是重疊的,但它看起來像是一種非常混亂的方式來實現我想要的東西,並且使得改變模型,編輯等變得更加困難。 – Dani 2010-09-22 14:48:07