代わりQDirModel
QFileSystemModel
を使用する必要があります。
QDirModelの使用はもはや推奨されません。 QFileSystemModelクラスは、より効果的な代替手段です。
Qtのドキュメント:QDirModelとあなたの質問のためにQFileSystemModel
- フラグの組み合わせを探します。
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();
簡単な例:あなたはQDirModel
を使用している場合、setFilter
簡単な例ではQDir::AllDirs | QDir::Files
、あなたはQFileSystemModel
を使用する場合:
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();
はあなたに@Kirill Chernikovに感謝します。しかし、問題は残っています..どのようにフィルタリングからフォルダを除外することは可能ですか? – michalis
ドキュメントでわかるように、「QDir :: AllDirs - すべてのディレクトリを一覧表示します。つまり、ディレクトリ名にフィルタを適用しない」名前のフィルタを設定すると、このフィルタはディレクトリ(フォルダ)には適用されませんが、ファイルに対してのみ適用されます。 –