2013-03-21 7 views
10

setNameFilters funktioniert nicht wie ich es erwarten würde, also wenn jemand erklären kann, wenn ich es falsch bin mit, oder ob vielleicht dies einen Fehler in Qt ist:QDir.setNameFilter Wie zeigt man nur Dateien mit bestimmten Erweiterungen an?

Hier ist mein Code Beispiel:

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

nach der Verarbeitung fileList enthält die Zeichenfolge "test.exe1"

Ich würde erwarten, dass Dateiliste nur Dateien mit der Erweiterung .exe NOT .exe * enthalten.

Wenn wollte ich Dateierweiterungen länger als .exe ich erwarten würde in "*.exe*" als meine Filter zu setzen.

Kann jemand helfen, klären, oder muss ich manuell mein filelist nach der Tat verarbeiten?

Antwort

13

Für den Anfang setNameFilters nicht QStringList zurückkehren, ist es nichts zurückgibt. Ihr Code sollte wie folgt aussehen:

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

Filterung funktioniert wie erwartet (keine Dateien Rückkehr mit "exe2" enden) in Linux mit Qt 5.0.1.

+0

Wenn ich sowohl .mp3 als auch .wav zeigen möchte, wie geht das? Vielen Dank – Casper

2

Auch, wenn Sie Dateien mit mehr als einer Art von Erweiterungen zeigen möchten, können Sie wie folgt aus tun.

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