Seite 1 von 1

TreeView filtern

Verfasst: 17. Juni 2009 12:36
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

Verfasst: 17. Juni 2009 12:41
von franzf
QDirModel::setNameFilter() ?

Verfasst: 17. Juni 2009 13:11
von Phorx
öhm, und wie benutze ich das, damit ich nur Verzeichnisse und .mp3s angezeigt bekomme?

Verfasst: 17. Juni 2009 13:40
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);

Verfasst: 17. Juni 2009 14:11
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

Verfasst: 26. Juni 2009 10:42
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