C++ 使用Qt筛选QFileInfoList文件

C++ 使用Qt筛选QFileInfoList文件,c++,qt,qt4,C++,Qt,Qt4,我有一个QFileInfoList(列表),其中包含有关目录及其文件的信息 QFileInfoList list = directory.entryInfoList(); 如何应用过滤器删除除图像文件(jpg、gif、png等)以外的所有内容 下面是一个简单的foreach循环,它只删除不是文件的所有内容 foreach (QFileInfo f, list){ if (!f.isFile()){ list.removeOne(f); } 如何

我有一个QFileInfoList(列表),其中包含有关目录及其文件的信息

QFileInfoList list = directory.entryInfoList();
如何应用过滤器删除除图像文件(jpg、gif、png等)以外的所有内容

下面是一个简单的foreach循环,它只删除不是文件的所有内容

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

如何应用过滤器删除除图像文件(jpg、gif、png等)以外的所有内容?

首先,为什么不使用适当的标志来QDir::EntryInfo列表并过滤掉所有不是目录的内容以及所需的文件扩展名

其次,您可以在每个文件上使用`bool QImageReader::canRead(),但它将访问文件以检查它们是否是图像,因此速度会非常慢

此外,您还可以尝试使用
QImageReader::supportedImageFormats()
构建受支持的扩展,并将它们作为筛选器添加到EntryInfo列表中,前提是您可以通过扩展确定图像:

QStringList nameFilter;
nameFilter << "*.png" << "*.jpg" << "*.gif";
QFileInfoList list = directory.entryInfoList( nameFilter, QDir::Files );
QStringList名称过滤器;
名称过滤器