Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用QDirIterator递归地遍历目录_C++_Qt - Fatal编程技术网

C++ 使用QDirIterator递归地遍历目录

C++ 使用QDirIterator递归地遍历目录,c++,qt,C++,Qt,我试图找到一种方法,递归地遍历一个目录,当程序运行时,该目录会主动地向其中添加新文件。QDirIterator可以很好地完成初始迭代,但似乎没有办法“刷新”QDirIterator,以便它再次遍历目录并生成更新的条目列表。有没有一种方法可以让QDirIterator“刷新”,或者有没有更好的方法来完成我想要完成的任务 以下是我的代码片段: QDirIterator dirIterator(directory, QDir::AllEntries); void MainWindow::on_Bu

我试图找到一种方法,递归地遍历一个目录,当程序运行时,该目录会主动地向其中添加新文件。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 dirIterator(目录,QDir::AllEntries);
void主窗口::在按钮上单击()
{    
if(dirIterator.hasNext()){
qDebug()imageChip1->setIcon(QIcon(dirIterator.next());
filename=dirIterator.filename();
filepath=dirIterator.filepath();
}
}
此代码适用于QDirIterator初始化时目录中存在的任何条目,但不适用于QDirIterator初始化后添加到目录中的任何条目

有没有办法让QDirIterator“刷新”,或者有更好的方法 做我想做的事

问题是,在扫描过程中,用目录和文件结构填充迭代器对象,无法获得新的文件系统更改。但是你肯定可以在Qt中找到帮助。它被称为。要实现您想要的功能,我首先扫描目录并添加它们(或者可能只是根目录,具体取决于)以进行监视。仅查看目录的简单示例如下:

有没有办法让QDirIterator“刷新”,或者有更好的方法 做我想做的事


问题是,在扫描过程中,用目录和文件结构填充迭代器对象,无法获得新的文件系统更改。但是你肯定可以在Qt中找到帮助。它被称为。要实现您想要的功能,我首先扫描目录并添加它们(或者可能只是根目录,具体取决于)以进行监视。查看目录的简单示例:

谢谢@AlexanderVX我写了一个函数,每次修改目录时都会通知我,但是当目录中包含新文件时,有没有办法更新QDirIterator?@CalypsoCoder,QDirIterator似乎是不可变的。让它对数据源中的变化做出反应,使它不是一成不变的,也不是根本不同的。您可以使用QDiritator的相同接口,并与QFileSystemWatcher进行一些混合。我想这值得几小时的工作,而且界面也需要用信号来扩展。谢谢@AlexanderVX我写了一个函数,每次修改目录时都会通知我,但是当目录中包含新文件时,有没有办法更新QDirIterator?@CalypsoCoder,QDirIterator似乎是不可变的。让它对数据源中的变化做出反应,使它不是一成不变的,也不是根本不同的。您可以使用QDiritator的相同接口,并与QFileSystemWatcher进行一些混合。我想这值得花上几个小时的时间,接口也需要用信号来扩展。