如何从委托更改QT列表视图背景?

时间:2014-06-09 17:59:34

标签: qt delegates

我的表单中有一个listview,我有一个项目委托。我需要做的是从我的项目委托中更改项目的背景颜色。

好吧,假设我有一个Listview,我填写了这个列表

"Blue",
"Red",
"Green"

另一方面,我的listview有一个Item委托。我需要用自己的颜色更改这些项目的背景颜色。

1 个答案:

答案 0 :(得分:0)

您必须覆盖代理中的paint(self, painter, option, index)函数才能更改项目的绘制方式。

例如:

class MyDelegate(QItemDelegate):

    #...

    def paint(self, painter, option, index):

        painter.save()                   # You can restore the original painter later.
        painter.setBrush(QBrush(Qt.red)) # Set background color.
        painter.restore()                # Restore the original painter.

现在怎么办?

现在您已经知道如何绘制背景,您需要获取正在绘制的项目的值,以便您可以决定颜色。为此,您可以使用paint函数的最后一个参数index,这是一个QModelIndex实例,您可以使用它来获取您正在寻找的值。