我需要在qt中查看一个目录。已创建连接。但在文件编辑时,发送者会发出两次目录改变信号。文件更改的信号也在同一时间发出。发射两次信号有什么用?有没有办法知道哪个文件/文件夹被更改了?请帮帮我..以下是连接代码
QFileSystemWatcher *watcher = new QFileSystemWatcher;
watcher->addPath("/home/user/directory/");
connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(directoryChangedHandler(QString)));and函数
void MainWindow::directoryChangedHandler(QString path)
{
QMessageBox::information(0, "Directory Changed", "Directory Changed at " + path);
}发布于 2013-03-20 13:45:29
我发现了问题所在。普通编辑器从磁盘中删除并重新写入该文件。因此,删除文件和添加文件有两个信号。我尝试在Ubuntu中使用nano编辑器编辑该文件。它不发出任何directoryChanged信号,但发出fileChanged信号。所以这意味着它不会删除和添加文件,而是编辑相同的文件。帮助这一结论的另一件事是,在使用普通编辑器时,该路径将从watcher中删除。这意味着,该文件暂时不存在。我必须再次手动添加该路径。这在使用nano时不会发生。由于我再次编写了添加路径的代码,因此显示错误"QFileSystemWatcher: failed to add paths: /home/user/directory/file“。因为该路径已经在watcher中。
https://stackoverflow.com/questions/15431422
复制相似问题