PyQt,在一系列单元格中更改QTableWidgetItem背景颜色

时间:2016-04-27 10:17:29

标签: colors background pyqt4 qtablewidget qtablewidgetitem

我有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秒)。

是否有更高效的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

是的,切换到模型/视图方法。也就是说,使用QTableViewQTableModel代替QTableWidget。这种方法更快,因为背景颜色只计算(一百个左右)可见细胞而不是全千个细胞。

使用Model / View方法需要一些投资,但对于较大的表,它当然是值得的。

概念在the Qt docs中解释。还有一个tutorial。它们都有C ++代码片段但是它并不难翻译成PyQt (实际上,请参阅下面的评论)。