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_())```



Ответы (0 шт):