TreeView filtern

Alles rund um die Programmierung mit Qt
Antworten
Phorx
Beiträge: 29
Registriert: 21. Mai 2009 22:36
Kontaktdaten:

TreeView filtern

Beitrag von Phorx »

Hallo,

ich habe bis jetzt folgendes:

Code: Alles auswählen

	QDirModel *model = new QDirModel;
	ui.treeView->setModel(model);
Im treeView wird mir dann auch schön der Arbeitsplatz angezeigt. Jetzt möchte ich aber nur Verzeichnisse und .mp3-Dateien anzeigen lassen.

Kann mir jemand erklären wie ich das erreiche?!

Vielen Dank schonmal im Voraus!

Mit freundlichen Grüßen
Phorx
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

QDirModel::setNameFilter() ?
Phorx
Beiträge: 29
Registriert: 21. Mai 2009 22:36
Kontaktdaten:

Beitrag von Phorx »

öhm, und wie benutze ich das, damit ich nur Verzeichnisse und .mp3s angezeigt bekomme?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Du darfst auch experimentieren.

Code: Alles auswählen

QDirModel *model = new QDirModel;
QStringLlist filters;
filters << "*.mp3";
model->setNameFilters(filters);
Das hättest du selber hinbekommen.
Nur gibt es ein Problem, es wird alles rausgefiltert. Warum? Weil der Filter auch auf Directories angewandt wird. Und wenn im root-dir kein Verzeichnis mit "*.mp3" enthält, wird halt gar nix mehr angezeigt.

Gut dann wälz ich mich durch die Doku zu QDirModel. Und entdecke eine weitere Methode:
void QDirModel::setFilter ( QDir::Filters filters )
QDir::Filters hat ein "QDir::AllDirs", bei dem dabei steht:
List all directories; i.e. don't apply the filters to directory names.
Wunderbar, genau das was wir brauchen. Nur wenn wir das allein zeigen, werden nur noch Verzeichnisse angezeigt, auch nicht das was wir wollen.
Was wir wollen, und genau das hast du dir selbst als Ziel gesetzt, Alle Directories + mp3-Dateien. Und genau so klappt das:

Code: Alles auswählen

model->setFilter(QDir::AllDirs | QDir::Files);
Phorx
Beiträge: 29
Registriert: 21. Mai 2009 22:36
Kontaktdaten:

Beitrag von Phorx »

Ich hatte mittlerweile das mit den einzelnen auch raus, aber bei dem Problem, was du mir jetzt noch erklärt hast bin ich hängen geblieben.

Also vielen Dank! Jetzt klappts :D
niyou
Beiträge: 13
Registriert: 26. Juni 2009 08:28

Beitrag von niyou »

Phorx hat geschrieben:Ich hatte mittlerweile das mit den einzelnen auch raus, aber bei dem Problem, was du mir jetzt noch erklärt hast bin ich hängen geblieben.

Also vielen Dank! Jetzt klappts :D
kleiner Tip: ergänze setFilter um QDir::NoDotAndDotDot

Code: Alles auswählen

model->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
Dann verschwinden diese nervigen Ordner.

niyou
Antworten