1

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

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

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

有人有解释吗?提前感谢=)

4

1 回答 1

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

于 2012-10-31T01:33:20.240 回答