QTreeView засунутый в QComboBox

Jul 15, 2009 15:09

Озадачился сабжем, вообщем-то ни каких проблем с первого взгляда нет, делаем:
comboBox.setView(someTreeView)
comboBox.setModel(someModel)
и надеемся на радость.. но нет, ведет себя крайне плохо, при попытках развернуть-свернуть (expand-collapse) ветки TreeView ComboBox сворачивается сам.
гуглинг подсказал ссылку: http://lists.trolltech.com/qt4-preview-feedback/2008-02/thread00033-0.html

update: доберусь до работы, если там не съедят моск юзера, то допилю до разумного состояния питоновский вариант и куда-нибудь выложу. ибо то, что сделано за 5 минут еще не совсем работает.

update2:

class TreeComboBox(QtGui.QComboBox): def __init__(self, parent = None, column = None, model = None): QtGui.QComboBox.__init__(self, parent) self.view = QtGui.QTreeView(self) self.view.header().hide() self.setView(self.view) self.view.viewport().installEventFilter(self) self.ignoreHide = 0 if model: self.setModel(model) for i in range(0, model.columnCount(QtCore.QModelIndex())): self.view.hideColumn(i) self.view.showColumn(column) def eventFilter(self, object, event): if event.type() == QtCore.QEvent.MouseButtonPress and object == self.view.viewport(): if not self.view.visualRect(self.view.indexAt(event.pos())).contains(event.pos()): self.ignoreHide = 1 return 0 def showPopup(self): self.setRootModelIndex(QtCore.QModelIndex()) QtGui.QComboBox.showPopup(self) def hidePopup(self): if self.ignoreHide: self.ignoreHide = 0 else: self.setRootModelIndex(self.view.currentIndex().parent()) self.setCurrentIndex(self.view.currentIndex().row()) QtGui.QComboBox.hidePopup(self) print self.currentIndex()

ссылко, python

Previous post Next post
Up