qfilesystemwatcher在编辑文件时发出2次目录更改信号

时间:2013-03-15 11:36:59

标签: c++ qt qt4

我需要在qt中查看目录。创建了连接。但是当文件编辑时,发件人发出两次目录更改信号。 filechanged信号也同时发出。两次发射信号的用途是什么?有没有办法知道哪个文件/文件夹被更改?请帮忙.. 这是连接代码

QFileSystemWatcher *watcher = new QFileSystemWatcher;
watcher->addPath("/home/user/directory/");
connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(directoryChangedHandler(QString)));

和功能

void MainWindow::directoryChangedHandler(QString path)
{
    QMessageBox::information(0, "Directory Changed", "Directory Changed at " + path);
}

1 个答案:

答案 0 :(得分:6)

我弄明白了这个问题。普通编辑器从磁盘中再次删除和写入文件。因此删除文件和添加文件的两个信号。我尝试使用nano中的Ubuntu编辑器编辑文件。它不会发出任何directoryChanged信号,但会发出fileChanged信号。这意味着它不会删除和添加文件,而是编辑同一个文件。有助于得出这个结论的另一件事是,在使用普通编辑器时,路径将从watcher中删除。这意味着,该文件暂时不存在。我必须再次手动添加该路径。使用nano时没有发生这种情况。由于我编写了代码以再次添加路径,因此它显示错误“QFileSystemWatcher: failed to add paths: /home/user/directory/file”。因为路径已经在watcher