RootItem in QDirModel ändern

Alles rund um die Programmierung mit Qt
Antworten
Vaaco
Beiträge: 21
Registriert: 12. Oktober 2006 11:51

RootItem in QDirModel ändern

Beitrag von Vaaco »

Ich möchte einen QFileDialog so modifizieren, das nur ein bestimmter Ordner (inkl. Dateien und Unterordner) angezeigt wird. Ein Navigieren ausserhalb dieses Ordner soll also nicht möglich sein.
Mein erster Ansatz war, über ein ProxyModel (QDirModel als Source) die unerwünschten Ordner rauszufiltern. Hierbei habe ich aber das Problem, dass das RootItem vom Source-Model immer noch auf "MyComputer" gesetzt bleibt, und somit im FileDialog auch bis dahin navigiert werden kann. Es sind dann zwar nur die gewünschten Ordner sichtbar, aber ich möchte das Navigieren generell nicht zulassen.
( Das ich trotz Filter navigieren kann ist logisch, da es sich bei der verbleibenden Struktur um die Parent-Items des gewünschten Ordners handelt. Diese können nicht rausgefiltert werden, da die Children eines rausgefilterten Items natürlich auch raus sind.)

Mein zweiter Ansatz wäre jetzt, das ich den Ordner als RootItem setze. Damit wäre ein navigieren ausserhalb dieses Ordner ja nicht mehr möglich. Allerdings weiss ich nicht wie ich in einem QDirModel/ProxyModel das RootItem neu setzen kann.
Mit den Funktionen mapToSource/mapFromSource hab ich schon experimentiert, bin aber zu keinem Ergebnis gekommen.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Aufn ersten Blick seh ich da nix, d.h. es ist wohl nicht dafuer vorgesehen.

Abhilfe, nen neues QRootedDirModel bauen, basierend auf QAbstractItemModel.
Hat man dann auch viel mehr freiheiten ...
und so kompliziert isses auch ned. ... eher ne schoene uebeung zum verstaendnis des Modell view konzeptes ...

Ciao ...
Vaaco
Beiträge: 21
Registriert: 12. Oktober 2006 11:51

Beitrag von Vaaco »

Genau das wollte ich eigentlich vermeiden.

Es muss doch eine Möglichkeit geben das Rootdirectory neu zu setzen?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Die gibt es: QFileDialog::setDirectory und alles andere ist Unsinn...
Vaaco
Beiträge: 21
Registriert: 12. Oktober 2006 11:51

Beitrag von Vaaco »

Die Anforderung an den Dialog ist, das der gesetzte Ordner nicht verlassen werden darf.
Mit setDirectory() kann ich dass aber leider nicht verhindern.
Antworten