QFileSystemWatcher:检测已删除的&添加了文件,但没有修改过

时间:2012-10-30 22:59:50

标签: c++ qt qfilesystemwatcher

我正在使用Qt在Windows上开发应用程序,我需要检测特定文件夹中的更改。 所以我使用了QFileSystemWatcher,并将directoryChanged信号连接到一个函数,该函数将在发生更改时发送消息。

问题是如果我修改文件的内容,则不会调用连接到directoryChanged的“slot”函数,但仅在删除或添加文件或目录时才会调用。

但是,文档说当“指定路径上的目录被修改(例如,添加文件,修改或删除)或从磁盘中删除时,会发出此信号。”

有没有人有解释? 在此先感谢=)

1 个答案:

答案 0 :(得分:0)

根据Qt源代码版本4.8.2,如下:

void QFileSystemWatcherPrivate::_q_directoryChanged(const QString &path, bool removed)
{
    Q_Q(QFileSystemWatcher);
    if (!directories.contains(path)) {
        // perhaps the path was removed after a change was detected, but before we delivered the signal
        return;
    }
    if (removed)
        directories.removeAll(path);
    emit q->directoryChanged(path);
}

当文件被删除,添加(对于新添加的文件不包含在目录中)并重命名时,似乎directoryChanged会发出。该实现不保证检测文件内容的修改。希望有所帮助:P