我试图找出一种方法来递归遍历一个目录,该目录在程序运行时主动获取添加到其中的新文件。 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后添加到目录中的任何条目。
答案 0 :(得分:0)
有没有办法让QDirIterator&#34;刷新&#34;或者,还有更好的方法 做我想要完成的事情?
问题是,如果扫描用目录和文件结构填充迭代器对象,则无法获得新的文件系统更改。但你绝对可以在Qt找到帮助。它被称为QFileSystemWatcher。要实现您想要的功能,我首先扫描目录并添加它们(或者只是一个根,取决于)来观察。仅查看目录的简单示例:How to use QFileSystemWatcher to monitor a folder for change