setNameFilters не работает так, как я ожидал, так что если кто-нибудь может объяснить, правильно ли я его использую, или, возможно, это ошибка в Qt:
Вот мой пример кода:
QDir export_folder("C:\path");
QStringList fileList = export_folder.setNameFilters(QStringList()<<"*.exe");
после обработки fileList содержит строку «test.exe1»
Я ожидаю, что fileList будет включать только файлы с расширением .exe, а не .exe *.
Если бы я хотел, чтобы расширения файлов были длиннее, чем .exe, я бы ожидал вставить "*.exe*"
как мой фильтр.
Может кто-то помочь уточнить, или я должен вручную обработать мой fileList после факта?
Для начинающих, setNameFilters
не возвращается QStringList
, это ничего не возвращает. Ваш код должен выглядеть так:
QDir export_folder("C:\\path");
export_folder.setNameFilters(QStringList()<<"*.exe");
QStringList fileList = export_folder.entryList();
Фильтрация работает должным образом (не возвращает файлы, оканчивающиеся на «exe2») в Linux с Qt 5.0.1.
Кроме того, если вы хотите показать файлы с более чем одним видом расширений, вы можете сделать следующее.
export_folder.setNameFilters( QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg" );