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