Я хочу расширить вопрос, который я задал ранее, с помощью фильтра. В моем предыдущем вопросе мне помогли отложить загрузку древовидной структуры, сначала родители и только добавив дочерние элементы родителя, когда пользователь нажимает на узел более или менее следующим образом
from PyQt4 import QtGui
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.mytreeview = QtGui.QTreeView(self)
self.setLayout(QtGui.QVBoxLayout())
self.layout().addWidget(self.mytreeview)
self.model = QtGui.QStandardItemModel(self.mytreeview)
self.mytreeview.setModel(self.model)
self.mytreeview.clicked.connect(self.update_model)
self.initialise_model()
def initialise_model(self):
for text in ["parent1", "parent2", "parent3"]:
item = QtGui.QStandardItem(text)
self.model.appendRow(item)
def update_model(self, index):
parent = self.model.itemFromIndex(index)
for text in ["children1", "children2", "children3"]:
children = QtGui.QStandardItem("{}_{}".format(parent.text(), text))
parent.appendRow(children)
self.mytreeview.expand(index)
Теперь я хочу расширить и использовать фильтр для древовидного представления, чтобы пользователь мог ввести имя родительского узла, и древовидное представление отфильтровало бы себя до соответствующих соответствующих узлов. Я по-прежнему хочу, чтобы пользователь мог щелкать родительский узел, и даже после фильтрации дочерние узлы будут добавлены к родительскому узлу.
Как я могу адаптировать для этого следующее? Я установил древовидное представление следующим образом
proxyModel = QSortFilterProxyModel(treeView)
proxyModel.setSourceModel(self.model)
# set model
treeView.setModel(proxyModel);
treeView.setSortingEnabled(true)
def update_model(self, index):
parent = self.model.itemFromIndex(index)
##not sure about this now in the light of the proxyModel
for text in ["children1", "children2", "children3"]:
children = QtGui.QStandardItem("{}_{}".format(parent.text(), text))
parent.appendRow(children)
self.mytreeview.expand(index)#not sure about this either as the index is of the proxyModel
У меня есть два основных вопроса: во-первых, индекс proxyModel и индекс исходной модели, я не уверен, как это работает, а также при расширении щелчка по узлу,