2016-06-29 12 views
1

私は(私はAllEntriesを使用しています)フォルダとファイルの両方が含まれていQDirModelを持っていると思いますが非表示になります。QDirModel setNameFiltersは、フォルダ

問題は、私がQDirModelsetNameFilters()を呼んでいるときに、すべてのフォルダが緩んでしまうことです。 フィルタリングからフォルダを除外する方法はありますか?

ありがとうございます。

答えて

2

代わりQDirModelQFileSystemModelを使用する必要があります。

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(); 
+0

はあなたに@Kirill Chernikovに感謝します。しかし、問題は残っています..どのようにフィルタリングからフォルダを除外することは可能ですか? – michalis

+0

ドキュメントでわかるように、「QDir :: AllDirs - すべてのディレクトリを一覧表示します。つまり、ディレクトリ名にフィルタを適用しない」名前のフィルタを設定すると、このフィルタはディレクトリ(フォルダ)には適用されませんが、ファイルに対してのみ適用されます。 –

関連する問題