Sie sollten QFileSystemModel
statt QDirModel
verwenden:
Die Nutzung von QDirModel wird nicht mehr empfohlen. Die Klasse QFileSystemModel ist eine performantere Alternative.
Qt-Dokumentation: QDirModel und QFileSystemModel
Für Ihre Frage - für die Kombination von Fahnen aussehen: QDir::AllDirs | QDir::Files
in setFilter
Einfaches Beispiel, wenn Sie QDirModel
verwenden:
QTreeView view;
QStringList filters;
filters << "*.txt";
QDirModel* dirModel = new QDirModel(&view);
dirModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
dirModel->setNameFilters(filters);
view.setModel(dirModel);
view.show();
Einfaches Beispiel , wenn Sie QFileSystemModel
:
verwenden
QTreeView view;
StringList filters;
filters << "*.txt";
QFileSystemModel* fileSystemModel = new QFileSystemModel(&view);
fileSystemModel->setRootPath("C:/");
fileSystemModel->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
fileSystemModel->setNameFilterDisables(false);
fileSystemModel->setNameFilters(filters);
view.setModel(fileSystemModel);
view.show();
danke @Kirill Chernikov. Aber die Frage bleibt .. Wie ist es möglich, Ordner von der Filterung auszuschließen? – michalis
Wie Sie in der Dokumentation sehen können: "QDir :: AllDirs - Listet alle Verzeichnisse auf; d. H., Wenden Sie die Filter nicht auf Verzeichnisnamen an." Wenn Sie Filter für name festlegen, gelten diese Filter nicht für Verzeichnisse (Ordner), sondern nur für Dateien. –