У меня есть QListWidget в PySide2, и мне нужны разные цвета для выбранных элементов. Это возможно? Я включу 2 фотографии для демонстрации.
Что у меня есть на данный момент:
И это то, что я хотел бы иметь:
У меня есть QListWidget в PySide2, и мне нужны разные цвета для выбранных элементов. Это возможно? Я включу 2 фотографии для демонстрации.
Что у меня есть на данный момент:
И это то, что я хотел бы иметь:
Вы должны использовать делегат и переопределить QPalette QStyleOptionViewItem. В следующем примере цвет выделения зависит от того, четная это строка или нет.
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_())