我使用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