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

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

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

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

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

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

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

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


person gollumullog    schedule 21.03.2013    source источник


Ответы (2)


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

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

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

person Community    schedule 21.03.2013

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

export_folder.setNameFilters( QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg" );
person Casper    schedule 01.08.2014