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" );