自定义ListItem包含彩色标签,彩色标签背景不显示?

Customize ListItem contains colorful label, colorful label background not show?

我自定义了QListViewListItemListItem有彩色标签,但是彩色标签不起作用?我找不到为什么QLabel不显示是颜色。

演示代码

from qtpy.QtWidgets import *
from qtpy.QtCore import *
from qtpy.QtGui import *

class ListItem(QWidget):
    def __init__(self, color, info):
        super().__init__()
        lay = QHBoxLayout()
        self._colorLabel = QLabel()
        self._info = QLabel(info)

        lay.addWidget(self._colorLabel)
        lay.addWidget(self._info)
        self.setLayout(lay)

        self._colorLabel.setAutoFillBackground(True)
        self.setLabelColor(color)

    def setLabelColor(self, color):
        pal = self._colorLabel.palette()
        pal.setColor(QPalette.Window, color)
        self._colorLabel.setPalette(pal)

class ListWiget(QListWidget):
    def _addItem(self, item):
        tmpItem = QListWidgetItem()
        tmpItem.setSizeHint(item.sizeHint())
        self.addItem(tmpItem)
        self.setItemWidget(tmpItem, item)


app = QApplication([])

listW = ListWiget()
item = ListItem(Qt.red, "red")
item2 = ListItem(Qt.blue, "blue")
listW._addItem((item2))
listW._addItem(item)
listW.show()

app.exec()

图片
它总是显示白色背景?

您必须使用 Base 而不是 Window:

def setLabelColor(self, color):
    pal = self._colorLabel.palette()
    pal.setColor(QPalette.Base, color)
    self._colorLabel.setPalette(pal)