是否可以更改QTableWidget行标签的颜色?

时间:2014-07-10 17:09:05

标签: python qt qt4 pyqt pyqt4

我有一个继承自QTableWidget的类,我想知道是否可以更改表中每一行的行标签的颜色?

我不想更改任何单元格或列标题的颜色。

谢谢:)

P.S。我希望每个行标签都有不同的颜色。我的动机是我可以使用这些颜色作为键/图例,因为表格中的每一行都对应于图表上不同颜色的线条。

编辑:图片说明了我所指的表格的元素:

row labels highlighted in red

2 个答案:

答案 0 :(得分:3)

是的,这是有可能的,但只有轻微的伎俩。对于setVerticalHeaderItem QTableWidget,您可以为标题行设置QTableWidgetItem,然后您可以为每行定义背景画笔。但是,大多数情况下背景将被忽略,因为实际的QStyle将覆盖它。将垂直标题小部件的样式设置为不会改变背景的样式,但这样做很有效。

示例:

from PySide import QtGui

app = QtGui.QApplication([])

table = QtGui.QTableWidget(4, 2)
table.show()

for i in range(0, 4):
    item = QtGui.QTableWidgetItem('Text')
    item.setBackground(QtGui.QColor(i*50, i*30, 200-i*40))
    table.setVerticalHeaderItem(i, item)

# print(QtGui.QStyleFactory.keys())
table.verticalHeader().setStyle(QtGui.QStyleFactory.create('CleanLooks'))

app.exec_()

enter image description here

答案 1 :(得分:0)

是的,看来你可以这样做,使用QTableWidgetItem functions,例如你通过QBrush object的setForeground,我相信你可以使用QBrush的setColor函数传递一种颜色。 QTableWidgetItem文档具有许多基于美学的功能,因此它看起来像您正在寻找的东西,因为它似乎能够针对桌面上的特定单元格/项目。如果你想更多地了解QTableWidget文档本身,这里也是a link to that