QDir.setNameFilter, как показывать только файлы с определенными расширениями?

setNameFilters не работает так, как я ожидал бы, поэтому, если кто-нибудь может объяснить, использую ли я его неправильно, или, может быть, это ошибка в Qt:

Вот мой пример кода:

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

после обработки fileList содержит строку "test.exe1"

Я бы ожидал, что fileList будет включать только файлы с расширением .exe NOT.exe *.

Если бы я хотел, чтобы расширения файлов дольше, чем .exe, я ожидал бы добавить "*.exe*" в качестве моего фильтра.

Может кто-то помочь прояснить, или мне нужно вручную обработать файл файл после факта?

Ответ 1

Для начала setNameFilters не возвращает QStringList, он ничего не возвращает. Ваш код должен выглядеть так:

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

Фильтрация работает как ожидалось (не возвращая файлы, заканчивающиеся на "exe2" ) в Linux с Qt 5.0.1.

Ответ 2

Кроме того, если вы хотите показывать файлы с более чем одним видом расширений, вы можете сделать следующее.

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