2013-03-21 11 views
10

setNameFilters nie działa jak bym się spodziewał, więc jeśli ktoś może wyjaśnić, jeśli używam go nieprawidłowo, lub jeśli może to jest błąd w Qt:QDir.setNameFilter jak wyświetlać tylko pliki z określonymi rozszerzeniami?

Oto mój przykładowy kod:

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

po przetworzeniu fileList zawiera ciąg "test.exe1"

Spodziewam się, że fileList będzie zawierał tylko pliki z rozszerzeniem .exe NIE .exe *.

Jeśli chciałbym rozszerzeń plików dłuższych niż .exe, spodziewam się umieścić w moim filtrze "*.exe*".

Czy ktoś może pomóc w wyjaśnieniu, czy też muszę ręcznie przetworzyć moją listę plików po fakcie?

Odpowiedz

13

Na początek, setNameFilters nie zwraca QStringList, nic nie zwraca. Kod powinien wyglądać następująco:

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

filtrujący działa zgodnie z oczekiwaniami (nie wraca pliki kończące się na „exe2”) w systemie Linux z Qt 5.0.1.

+0

Jeśli chcę pokazać zarówno .mp3, jak i .wav, jak to zrobić? Dzięki – Casper

2

Ponadto, jeśli chcesz wyświetlać pliki z więcej niż jednym rodzajem rozszerzeń, możesz wykonać następujące czynności.

export_folder.setNameFilters(QStringList() << "*.exe" << "*.pdf" << "*.docx" << "*.jpg"); 
Powiązane problemy