web-dev-qa-db-ja.com

QDir.setNameFilter特定の拡張子を持つファイルのみを表示する方法は?

setNameFiltersは私が期待するように機能していないので、誰かが私がそれを間違って使用しているかどうか、またはおそらくこれがQtのバグであるかどうかを説明できる場合:

これが私のコードサンプルです:

QDir export_folder("C:\path");
QStringList fileList = export_folder.setNameFilters(QStringList()<<"*.exe");

fileListの処理後、文字列「test.exe1」が含まれます

FileListには、拡張子が.exe *ではなく.exeのファイルのみが含まれると思います。

.exeより長いファイル拡張子が必要な場合は、フィルターとして"*.exe*"を入力する必要があります。

誰かが明確にするのを手伝ってもらえますか、それとも事後に手動でfileListを処理する必要がありますか?

14
gollumullog

手始めに、setNameFiltersQStringListを返しません、それは何も返しません。コードは次のようになります。

QDir export_folder("C:\\path");
export_folder.setNameFilters(QStringList()<<"*.exe");
QStringList fileList = export_folder.entryList();

Qt 5.0.1を使用するLinuxでは、フィルタリングは期待どおりに機能します(「exe2」で終わるファイルは返されません)。

20
user362638

また、複数の種類の拡張子を持つファイルを表示したい場合は、次のようにすることができます。

export_folder.setNameFilters( QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg" );
4
Casper