可以更改QTableWidget行标签的颜色吗?
我有一个类,它是从QTableWidget继承过来的。我想知道是否可以为表格中的每一行的行标签改变颜色?
我不想改变任何单元格或列标题的颜色。
谢谢 :)
附注:我希望每个行标签都有不同的颜色。这样做的原因是,我可以用这些颜色作为一个关键/图例,因为表格中的每一行对应于图表上不同颜色的线条。
编辑:下面是我提到的表格元素的示意图:
2 个回答
0
是的,看起来你可以这样做,使用一些叫做 QTableWidgetItem 函数 的东西,比如 setForeground。这个函数需要一个 QBrush 对象,而且我觉得你可以用 QBrush 的 setColor 函数来设置颜色。QTableWidgetItem 的文档里有很多关于外观的函数,看起来正是你需要的,特别是它能针对表格中的特定单元格或项目。如果你想更深入了解 QTableWidget 的文档,这里有 一个链接。
3
是的,这个是可以做到的,但需要一点小技巧。通过使用 QTableWidget
的 setVerticalHeaderItem
方法,你可以为表格的垂直标题行设置一个 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_()