gpt4 book ai didi

c++ - 当文件编辑时,qfilesystemwatcher 发出 2 次目录更改信号

转载 作者:行者123 更新时间:2023-12-02 03:37:51 25 4
gpt4 key购买 nike

我需要查看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);
}

最佳答案

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

关于c++ - 当文件编辑时,qfilesystemwatcher 发出 2 次目录更改信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15431422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com