QListWidget Item 突出显示项目的不同颜色
QListWidget Item different color for highlighted items
我在 PySide2 中有一个 QListWidget,我想为所选项目使用不同的颜色。这可能吗?我将附上 2 张图片来演示。
我目前拥有的:
这就是我想要的:
您必须使用委托并覆盖 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_())
我在 PySide2 中有一个 QListWidget,我想为所选项目使用不同的颜色。这可能吗?我将附上 2 张图片来演示。
我目前拥有的:
这就是我想要的:
您必须使用委托并覆盖 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_())