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


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