使用QDirIterator

时间:2016-03-01 00:14:19

标签: c++ qt

我试图找出一种方法来递归遍历一个目录,该目录在程序运行时主动获取添加到其中的新文件。 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后添加到目录中的任何条目。

1 个答案:

答案 0 :(得分:0)

  

有没有办法让QDirIterator&#34;刷新&#34;或者,还有更好的方法   做我想要完成的事情?

问题是,如果扫描用目录和文件结构填充迭代器对象,则无法获得新的文件系统更改。但你绝对可以在Qt找到帮助。它被称为QFileSystemWatcher。要实现您想要的功能,我首先扫描目录并添加它们(或者只是一个根,取决于)来观察。仅查看目录的简单示例:How to use QFileSystemWatcher to monitor a folder for change