На 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()