使用 QDirIterator 递归遍历目录
Recursively iterating through directory using QDirIterator
我正在尝试找出一种方法来递归迭代一个目录,该目录在程序运行时主动将新文件添加到其中。QDirIterator 可以很好地进行初始迭代,但似乎没有办法"刷新"QDirIterator,以便它再次遍历目录并提出更新的条目列表。有没有办法让QDirIterator"刷新",或者有没有更好的方法来完成我想要完成的事情?
这是我的代码片段:
QDirIterator dirIterator(directory, QDir::AllEntries);
void MainWindow::on_Button_clicked()
{
if (dirIterator.hasNext()) {
qDebug() << dirIterator.next();
dirIterator.next();ui->imageChip1->setIcon(QIcon(dirIterator.next()));
filename = dirIterator.fileName();
filepath = dirIterator.filePath();
}
}
此代码适用于初始化 QDirIterator 时目录中存在的任何条目,但不适用于初始化 QDirIterator 后添加到目录中的任何条目。
有没有办法让QDirIterator"刷新"或者有更好的方法 做我想完成的事情?
问题是,随着扫描用目录和文件结构填充迭代器对象,您无法获得新的文件系统更改。但是你绝对可以在Qt中找到帮助。它被称为QFileSystemWatcher。要实现您想要的功能,我将首先扫描目录并添加它们(或者可能只是一个根,取决于)来监视。仅监视目录的简单示例:如何使用 QFileSystemWatcher 监视文件夹的更改
相关文章:
- 使用后序遍历递归的深度优先搜索会产生意外输出
- 递归树遍历/分支删除的隔离错误
- 递归遍历字典尝试以计算总字数
- 如何遍历递归模板类
- C++,一个通用递归模板函数,用于遍历树状结构
- 从预序遍历迭代(不是递归)构造二叉搜索树
- 这种遍历二叉树的递归方法在一些递归后崩溃!为什么?
- 使用递归的顺序二叉树遍历与使用堆栈的优缺点
- 遍历目录递归问题
- 使用递归的顺序和预序遍历 - 二叉搜索树 C++
- 递归后序遍历解除分配二叉树节点
- 使用 QDirIterator 递归遍历目录
- 如何实现非递归 inOrder 遍历
- 无法使用非递归顺序方法遍历二叉树
- 递归二进制树遍历代码走向无穷大
- 使用递归函数对XML树进行预序遍历
- 递归:按顺序遍历返回列表
- 使用递归的BST顺序遍历
- 下面使用Map和Vector实现递归级阶遍历的时间复杂度是多少
- 如何在C++中调用递归链表遍历函数