struct path{ //
QFileInfoList dirInfos; // 文件夹
QFileInfoList fileInfos; // 文件
path(const QFileInfoList &dirInfos, const QFileInfoList &fileInfos) { // 构造函数
this->dirInfos = dirInfos;
this->fileInfos = fileInfos;
}
};
void getChildPath(const QFileInfoList &dirInfos, QList<path> &paths) { // 递归遍历子文件夹
if (dirInfos.isEmpty()) { //
return;
}
QDir dir;
for (const auto &dirInfo : dirInfos) {
dir = dirInfo.absoluteFilePath();
QFileInfoList childFileInfos = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks); // 子文件
QFileInfoList childDirInfos = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); // 子文件夹
paths.append(path(childDirInfos, childFileInfos)); // 记录
if (!childDirInfos.isEmpty()) { // 有文件夹再遍历
getChildPath(childDirInfos, paths); // 递归
}
}
}
int main(int argc, char *argv[]) {
QList<path> paths;
paths.append(path(QFileInfoList({ QFileInfo("D:\\test") }), QFileInfoList({})));
getChildPath(paths.constFirst().dirInfos, paths); // 遍历
return 0;
}
Qt遍历所有子文件夹
可以请我喝杯咖啡吗QAQ~
本文作者:vanxkr
本文链接:http://www.vanxkr.com/2020/1/Qt-dir-ergodic
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0许可协议。转载请注明出处!
0 条评论