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 после факта?

11

Решение

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

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

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

16

Другие решения

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

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

По вопросам рекламы [email protected]