我有QTableWidget
填充了QTableWidgetItems
,我想更改一系列单元格的背景颜色(行n ... m,所有列)。迭代行/列并通过某些方式更改每个QTableWidgetItem
的bg颜色。像
for n in range(startRow, endRow):
for c in range(self.tableWidget.columnCount()):
self.tableWidget.item(n,c).setBackgroundColor(self.tableBackgroundColor)
速度非常缓慢(英特尔i7每项约4毫秒,每25 * 40个电池4秒)。
是否有更高效的方法来实现这一目标?
答案 0 :(得分:1)
是的,切换到模型/视图方法。也就是说,使用QTableView
和QTableModel
代替QTableWidget
。这种方法更快,因为背景颜色只计算(一百个左右)可见细胞而不是全千个细胞。
使用Model / View方法需要一些投资,但对于较大的表,它当然是值得的。
概念在the Qt docs中解释。还有一个tutorial。它们都有C ++代码片段但是它并不难翻译成PyQt (实际上,请参阅下面的评论)。