答案 0 :(得分:1)
您必须使用委托并重写QStyleOptionViewItem的QPalette。在下面的示例中,突出显示颜色取决于它是否是偶数行。
from PySide2 import QtCore, QtGui, QtWidgets
import random
class HighlightedDelegate(QtWidgets.QStyledItemDelegate):
def initStyleOption(self, option, index):
super(HighlightedDelegate, self).initStyleOption(option, index)
# highlight color
color = (
QtGui.QColor("gray")
if index.row() % 2 == 0
else QtGui.QColor("salmon")
)
option.palette.setColor(
QtGui.QPalette.Normal, QtGui.QPalette.Highlight, color
)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QListWidget(
selectionMode=QtWidgets.QAbstractItemView.MultiSelection
)
delegate = HighlightedDelegate(w)
w.setItemDelegate(delegate)
for i in range(100):
it = QtWidgets.QListWidgetItem("item-{}".format(i))
w.addItem(it)
w.resize(640, 480)
w.show()
sys.exit(app.exec_())