代码来源:http://blog.csdn.net/liang19890820/article/details/9955201
void ImageTree::addFolderImages(QString path)
{
//判断路径是否存在
QDir dir(path);
if(!dir.exists())
{
return;
}
dir.setFilter(QDir::Files | QDir::NoSymLinks);
QFileInfoList list = dir.entryInfoList();
int file_count = list.count();
if(file_count <= 0)
{
return;
}
QStringList string_list;
for(int i=0; i<file_count; i++)
{
QFileInfo file_info = list.at(i);
QString suffix = file_info.suffix();
if(QString::compare(suffix, QString("png"), Qt::CaseInsensitive) == 0)
{
QString absolute_file_path = file_info.absoluteFilePath();
string_list.append(absolute_file_path);
}
}
}
分析:遍历文件的下一层,对于系统而言包括:文件夹、文件、快捷方式,使用setFilter即可过滤。通过entryInfoList则可以获取过滤后所得到的文件夹下的文件信息列表,遍历文件通过操作QFileInfo可得到所需的文件详细信息(大小、类型、后缀等)。
setFilter()设置搜索条件,QDir::Files - 只列出文件,QDir::NoSymLinks - 不列出符号连接(不支持符号连接的操作系统会忽略它)。
参考:
QFileInfoList:文件信息列表。
- QDir::Dirs - 只列出目录。
- QDir::Files - 只列出文件。
- QDir::Drives - 列出磁盘驱动器(在Unix下被忽略)。
- QDir::NoSymLinks - 不列出符号连接(不支持符号连接的操作系统会忽略它)。
- QDir::All - 列出目录、文件、驱动器和符号连接(除非你指定系统,这不会列出损坏的符号连接)。
- QDir::TypeMask - Dirs、Files、Drives和NoSymLink的掩码。
- QDir::Readable - 列出应用程序可以读访问的文件。
- QDir::Writable - 列出应用程序可以写访问的文件。
- QDir::Executable - 列出应用程序可以执行访问的文件。可执行需要由Dirs和Files组合。
- QDir::RWEMask - Readable、Writable和Executable标记的掩码。
- QDir::Modified - 只列出已经被修改的文件(在Unix下被忽略)。
- QDir::Hidden - 列出隐藏文件(在Unix下就是以.开始的文件)。
- QDir::System - 列出系统文件(在Unix下就是FIFO、套接字和设备文件)。
- QDir::AccessMask - Readable、Writable、Executable、Modified、Hidden和System标记的掩码。
- QDir::DefaultFilter - 内部标记
const QFileInfoList * QDir::entryInfoList ( const QString & nameFilter, int filterSpec = DefaultFilter, int sortSpec = DefaultSort ) const [虚]
返回这个目录中所有目录和文件的 QFileInfo 对象的列表,根据 setSorting ()排序并且根据 setFilter ()和 setNameFilter ()进行过滤。过滤器和排序的规定可以使用nameFilter、filterSpec和sortSpec参数来指定。
如果这个目录是不可读的或者不存在,返回0。
返回的指针是一个指向QFileInfoList的常量指针。这个列表归QDir对象所有并且将会在同一个QDir实例下次调用entryInfoList()时被重新使用。如果你想在调用这个函数之后保留这个列表的条目,你将需要复制它们。
也可以参考entryList()、setNameFilter()、setSorting()和setFilter()。
实例:dirview/dirview.cpp和fileiconview/qfileiconview.cpp。
const QFileInfoList * QDir::entryInfoList ( int filterSpec = DefaultFilter, int sortSpec = DefaultSort ) const [虚]
这是一个重载成员函数,提供了方便。它的行为基本上和上面的函数相同。返回这个目录中所有目录和文件的QFileInfo对象的列表,根据setSorting()排序并且根据setFilter()和setNameFilter()进行过滤。
过滤器和排序的规定可以使用filterSpec和sortSpec参数来指定。
如果这个目录是不可读的或者不存在,返回0。
返回的指针是一个指向QFileInfoList的常量指针。这个列表归QDir对象所有并且将会在同一个QDir实例下次调用entryInfoList()时被重新使用。如果你想在调用这个函数之后保留这个列表的条目,你将需要复制它们。
也可以参考entryList()、setNameFilter()、setSorting()和setFilter()。