2

我需要在 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);
}
4

1 回答 1

7

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

于 2013-03-20T05:45:28.723 回答