QTreeView auf rootPath des QFileSystemModels expandieren?
Verfasst: 30. Oktober 2011 03:36
Hallo,
ich verwende (unter Win7) ein QFileSystemModel als Datenmodell für eine QTreeView. Dazwischen befindet sich noch ein QSortFilerProxyModel. Standardmäßig werden zwar alle Laufwerke angezeigt, aber in eingeklappten Zustand ("collapsed").
Da ich dem FileSystemModel beispielsweise "C:/Users/Ich/Downloads" als rootPath zuweise, wäre es weitaus praktiabler, wenn der entsprechende Teilbaum expandiert würde. Wie kann so etwas bewerkstelligt werden?
Ich kann mir vorstellen, dass man über die QTreeView nicht besonders viel ausrichten kann, da es nur eine TreeView ist und diese nicht auf spezielle Dateipfad-Operationen ausgelegt ist. Meine Idee wäre quasi, den absoluten Pfad herzunehmen, ihn in seine einzelne Bestandteile zu zerlegen und mit Hilfe dieser Teile in der TreeView zum entsprechenden Eintrag entlang zu expandieren.
Allerdings schaffe ich es nicht, an die benötigten ModelIndexes heranzukommen. Wie kann ich z.B. alle Top-Level Einträge durchlaufen? Mit der sibling()-Funktion komme ich nicht klar oder sie funktioniert anders, als es die Dokumentation vermittelt. Ich habe z.B. einen gültig ModelIndex mit row()=0 und column()=0 für die ganz oberste Reihe (index.data() liefert auch den korrekten Text des Items). Wenn ich aber index.sibling(1,0) aufrufe, erhalte ich einen ungültigen Index zurück. Wie sind die Parameter der sibling()-Funktion in Bezug auf den aktuellen Index zu verstehen?
Ich bin für jede Hilfe dankbar.
Gruß,
antimatter
ich verwende (unter Win7) ein QFileSystemModel als Datenmodell für eine QTreeView. Dazwischen befindet sich noch ein QSortFilerProxyModel. Standardmäßig werden zwar alle Laufwerke angezeigt, aber in eingeklappten Zustand ("collapsed").
Da ich dem FileSystemModel beispielsweise "C:/Users/Ich/Downloads" als rootPath zuweise, wäre es weitaus praktiabler, wenn der entsprechende Teilbaum expandiert würde. Wie kann so etwas bewerkstelligt werden?
Ich kann mir vorstellen, dass man über die QTreeView nicht besonders viel ausrichten kann, da es nur eine TreeView ist und diese nicht auf spezielle Dateipfad-Operationen ausgelegt ist. Meine Idee wäre quasi, den absoluten Pfad herzunehmen, ihn in seine einzelne Bestandteile zu zerlegen und mit Hilfe dieser Teile in der TreeView zum entsprechenden Eintrag entlang zu expandieren.
Allerdings schaffe ich es nicht, an die benötigten ModelIndexes heranzukommen. Wie kann ich z.B. alle Top-Level Einträge durchlaufen? Mit der sibling()-Funktion komme ich nicht klar oder sie funktioniert anders, als es die Dokumentation vermittelt. Ich habe z.B. einen gültig ModelIndex mit row()=0 und column()=0 für die ganz oberste Reihe (index.data() liefert auch den korrekten Text des Items). Wenn ich aber index.sibling(1,0) aufrufe, erhalte ich einen ungültigen Index zurück. Wie sind die Parameter der sibling()-Funktion in Bezug auf den aktuellen Index zu verstehen?
Ich bin für jede Hilfe dankbar.
Gruß,
antimatter