2010-12-06 11 views
7

Ich habe eine QFileInfoList (Liste), die enthält Informationen über ein Verzeichnis und seine DateiFilter QFileInfoList Dateien mit Qt

QFileInfoList list = directory.entryInfoList(); 

Wie kann ich Filter anwenden alles außer Bilddatei (jpg, gif, png usw. entfernen)

Hier ist eine einfache foreach-Schleife, dass nur alles entfernt, die nicht eine Datei

foreach (QFileInfo f, list){ 
     if (!f.isFile()){ 
     list.removeOne(f); 
     } 

Wie kann ich Filter anwenden alles außer Bilddatei (jpg, gif, png etc.) entfernen?

Antwort

15

QDir :: entryInfoList entryInfoList() nimmt Namen Filter, wenn Sie bequem sind Bilder, die durch Erweiterung der Bestimmung:

QStringList nameFilter; 
nameFilter << "*.png" << "*.jpg" << "*.gif"; 
QFileInfoList list = directory.entryInfoList(nameFilter, QDir::Files); 
2

Zunächst einmal, warum werden Sie keine richtigen Flags zu QDir :: entryInfoList verwenden und alles filtern, was kein Verzeichnis ist, und gewünschte Dateierweiterungen.

Zweitens können Sie in jeder Datei verwenden `Bool QImageReader :: canRead (, aber es wird auf Dateien zugreifen zu überprüfen, ob sie Bilder sind, so ist es recht langsam sein.

Auch Sie können versuchen, bauen up-Erweiterungen unterstützt mit QImageReader::supportedImageFormats(), und fügen Sie sie als Filter