【问题标题】:Is it possible to change the colour of a QTableWidget row label?是否可以更改 QTableWidget 行标签的颜色?
【发布时间】:2014-09-01 04:17:05
【问题描述】:

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

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

谢谢:)

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

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

【问题讨论】:

  • 如果您将QTableWidget 替换为QTableView + QStandardItemModel,则可以轻松实现自定义QStyledItemDelegate
  • 感谢您的回复 - 不幸的是,我想我现在坚持使用 QTableWidget。很高兴知道未来!
  • 我还是不建议你使用QTableWidget,因为它的自定义小部件太纯了。

标签: python qt qt4 pyqt pyqt4


【解决方案1】:

是的,这是可能的,但只有一个小技巧。使用setVerticalHeaderItemQTableWidget,您甚至可以为标题行设置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_()

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我相信此功能与更改实际 cells 的属性有关,而不是与行标签有关。为了澄清我的意思,我在我的问题中添加了一张图片。感谢您抽出宝贵时间,但目前我认为这不能解决我的问题。
    猜你喜欢
    • 2017-09-16
    • 2019-07-14
    • 2012-03-10
    • 2012-02-16
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多