LINUX.ORG.RU

QComboBox с checkable элементами не работает в некоторых окружениях

 ,


0

1

На PyQt4 нужно реализовать кастомный выпадающий список с поддержкой мультивыбора, т.е. элементы выпадающего списка должны иметь checkbox. Казалось бы проблемы нет: берем QStandardItemModel и заполняем её QStandardItem'ами, у которых установленны нужные флаги.

К сожалению, оказалось, что это работает далеко не во всех окружениях. В Windows все замечательно, в Linux+KDE — тоже. А вот к примеру в OpenBox, Gnome или в Mac OS checkbox'ов почему-то нет. Кто-нибудь сталкивался с таким? Это баг Qt или что-то не так в коде?

Вот пример

from PyQt4.QtGui import *
from PyQt4.QtCore import *

data = ['item 1', 'item 2', 'item 3']

class Example(QComboBox):
    def __init__(self):
        super(Example, self).__init__()

        self.model = QStandardItemModel(len(data), 1)
        for i, f in enumerate(data):
            item = QStandardItem(f)
            item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
            item.setData(Qt.Unchecked, Qt.CheckStateRole)
            self.model.setItem(i, 0, item)

        self.setModel(self.model)
        self.show()


def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.