HowTo restore QTreeView letzten erweiterten Zustand?
Was ich habe:
QTreeView
Klasse mit Tabelle Daten- Und angeschlossen
QAbstractTableModel
Modell
Frage: so speichern Sie erweiterte Zustand der Elemente? Einige haben fertige Lösungen?
PS: ich weiß, dass ich tun kann, diesen code von mir, aber ich habe nicht viel Zeit, und das ist nicht das große problem, von unserem Projekt, aber wir brauchen es, weil die app enthält eine Menge solcher Tabellen, und jeder Zeit erweitern tree-Elemente ist verärgert, Prozess...
InformationsquelleAutor der Frage mosg | 2010-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, Dank Razi für
persistentIndexList
undisExpanded
Weg.Zweite, hier ist der code, der funktioniert bei mir Prima 🙂
dialog.h Datei:
dialog.cpp Datei:
Haben einen schönen Tag!)
PS: dieses Beispiel basiert auf
C:\Qt\4.6.3\examples\itemviews\simpletreemodel
code.InformationsquelleAutor der Antwort mosg
Dank Razi und mosg ich war in der Lage, diese zu arbeiten. Ich machte es wieder die erweiterten Status rekursiv, so dass ich dachte, ich würde teilen, Teil.
Dann verwenden wie:
Ich bin mit dem Qt::UserRole, weil hier mehrere Artikel in meinem Modell kann die gleiche display-name, die würde, versauen die den ausbau staatlicher Restauration, also die UserRole stellt einen eindeutigen Bezeichner für jedes Element, dieses problem zu vermeiden.
InformationsquelleAutor der Antwort iforce2d
Diese beiden Funktion mit einer Schleife sollte das für Sie tun:
InformationsquelleAutor der Antwort S. Razi
Hier ist ein allgemeiner Ansatz, der funktionieren sollte mit jedem QTreeView-basierte widget, das verwendet irgendeine Art von ID system zum identifizieren von Elementen (ich gehe davon aus, dass die ID ist ein int, das gespeichert ist im inneren der
Qt::UserRole
):Statt
MyWidget::saveExpandedState()
undMyWidget::saveExpandedState()
konnte man auch direkt anrufenMyWidget::saveExpandedOnLevel(tree_view_->rootIndex())
undMyWidget::restoreExpandedOnLevel(tree_view_->rootIndex())
. Ich habe nur die oben genannten Implementierung, da die for-Schleife aufgerufen wird, und sowiesoMyWidget::saveExpandedState()
undMyWidget::saveExpandedState()
schaute Reiniger mit meinem SIGNAL-und-SLOT-design.InformationsquelleAutor der Antwort Basti Vagabond
Ich überarbeitet habe iforce2d Lösung in diesem:
Diese Weise gibt es keine Notwendigkeit, Daten übereinstimmen. Natürlich - für diesen Ansatz zu arbeiten, der Baum muss bleiben relativ unverändert. Wenn man irgendwie ändern Sie die Reihenfolge der tree-Elemente - es wird zu erweitern falschen Knoten.
InformationsquelleAutor der Antwort Zeks
Für eine
QFileSystemModel
Sie nicht verwenden könnenpersistentIndexList()
.Hier ist meine Arbeit um. Es funktioniert ziemlich gut, auch, wenn ich so sagen selbst. Habe ich noch nicht getestet, um zu sehen, was passiert, wenn Sie eine langsame laden Dateisystem, oder wenn Sie entfernen Sie die Datei oder den Pfad.
Hoffe, dass jemand hilft.
InformationsquelleAutor der Antwort phyatt
Hier ist eine version, die sich nicht auf Knoten mit einem einzigartigen
Qt::UserRole
oderQt::DisplayRole
- es ist nur serialises die gesamteQModelIndex
header:
Quelle:
InformationsquelleAutor der Antwort Steve Lorimer