我有一个继承自QTableWidget的类,我想知道是否可以更改表中每一行的行标签的颜色?
我不想更改任何单元格或列标题的颜色。
谢谢:)
P.S。我希望每个行标签都有不同的颜色。我的动机是我可以使用这些颜色作为键/图例,因为表格中的每一行都对应于图表上不同颜色的线条。
编辑:图片说明了我所指的表格的元素:
答案 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_()
答案 1 :(得分:0)
是的,看来你可以这样做,使用QTableWidgetItem functions,例如你通过QBrush object的setForeground,我相信你可以使用QBrush的setColor函数传递一种颜色。 QTableWidgetItem文档具有许多基于美学的功能,因此它看起来像您正在寻找的东西,因为它似乎能够针对桌面上的特定单元格/项目。如果你想更多地了解QTableWidget文档本身,这里也是a link to that。