Ich möchte eine Frage, die ich zuvor mit einem Filter gestellt habe, erweitern. In meinem previous question ich Hilfe in verzögertes Laden bekam die treeview, Eltern erste und einzige der Eltern Kinder hinzugefügt, wenn der Benutzer auf dem Knoten mehr Klicks oder weniger alslazy Filtern von QTreeview mit QsortFIlterProxymodel
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)
folgt Ich möchte nun erweitern und die Verwendung eines machen Filter für die Baumansicht, so dass ein Benutzer den Namen eines Elternknoten eingeben kann und die Baumansicht sich selbst auf die entsprechenden relevanten Knoten herunterfiltert. Ich möchte immer noch die Fähigkeit für den Benutzer, auf einen übergeordneten Knoten zu klicken, und selbst wenn gefiltert nur dann würden die untergeordneten Knoten zum übergeordneten hinzugefügt werden.
Wie kann ich Folgendes anpassen, um dies zu tun? Ich habe die treeview eingerichtet wie folgt
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
Ich habe zwei Hauptfragen zunächst die proxyModel Index und die Quelle Modellindex, ich bin nicht sicher, wie das funktioniert und auch wenn auf dem Knoten der angeklickt Expandieren,