PYQT5 Как изменить стиль CheckBox в ComboBox (CheckableComboBox)?
У меня есть ComboBox с возможностью выбора нескольких элементов. Я хотел бы изменить стиль самого CheckBox в ComboBox. У меня есть стиль для обычного CheckBox, но как мне его применить к ComboBox?

import typing
import PyQt5
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtCore import QEvent
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItem
class MyCheckableComboBox(QtWidgets.QComboBox):
def __init__(self):
super().__init__()
self.setEditable(True)
self.lineEdit().setReadOnly(True)
self.closeOnLineEditClick = False
self.model().dataChanged.connect(self.updateCheck)
self.addItems('abcde')
self.lineEdit().setText('Выберите что-то')
def addItem(self, text, userData=None):
item = QStandardItem()
item.setText(text)
if userData is None:
item.setData(userData)
item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsUserCheckable)
item.setData(Qt.Unchecked, Qt.CheckStateRole)
self.model().appendRow(item)
def addItems(self, items: typing.Iterable[str]) -> None: # зачем None?
for item in items:
self.addItem(item)
def itemChecked(self, index):
item = self.model().item(index, 0)
print(index, item.checkState())
return item.checkState() == QtCore.Qt.Checked
def updateCheck(self, index):
# PyQt5.QtCore.QModelIndex.row()
row = index.row()
if self.model().item(row).checkState() == Qt.Checked:
print('выбрано', self.model().item(row).text())
elif self.model().item(row).checkState() == Qt.Unchecked:
print('не выбрано', self.model().item(row).text())
textChecked = []
for i in range(self.model().rowCount()):
if self.model().item(i).checkState() == Qt.Checked:
textChecked.append(self.model().item(i).text())
self.lineEdit().setText(', '.join(textChecked))
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.init_gui()
def init_gui(self):
self.window = QtWidgets.QWidget()
self.layout = QtWidgets.QGridLayout()
self.setCentralWidget(self.window)
self.window.setLayout(self.layout)
self.layout.addWidget(QtWidgets.QCheckBox('check'))
self.checkComboBox = MyCheckableComboBox()
self.layout.addWidget(self.checkComboBox)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
app.setStyleSheet("""
QCheckBox
{
spacing: 5px;
outline: none;
margin-bottom: 2px;
}
QCheckBox::indicator
{
width: 18px;
height: 18px;
}
QCheckBox::indicator:unchecked
{
image: url(Dark_rc/checkbox_unchecked.png);
}
QCheckBox::indicator:checked
{
image: url(Dark_rc/checkbox_checked.png);
}
""")
win = MainWindow()
win.show()
sys.exit(app.exec_())```