【问题标题】:qfilesystemwatcher emits directorychanged signal 2 times when file editedqfilesystemwatcher 在文件编辑时发出 2 次 directorychanged 信号
【发布时间】:2016-08-21 12:24:46
【问题描述】:

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

【问题讨论】:

  • 请在您设置连接的地方发布代码
  • 添加了代码。请检查并回复我。
  • 你确定这是唯一的连接语句/它所在的函数没有被调用两次吗?
  • 你确定。我还有一个连接语句将 filechanged 信号连接到一个插槽。它只调用一次。尝试评论它。
  • @TimMeyer 是你否决了这个问题?如果是,请撤消该操作。我已经更新了代码对吗?我认为代码没有问题。这就是我没有包含代码的原因。

标签: c++ qt qt4


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2014-05-10
    相关资源
    最近更新 更多