我正在使用Qt在Windows上开发应用程序,我需要检测特定文件夹中的更改。 所以我使用了QFileSystemWatcher,并将directoryChanged信号连接到一个函数,该函数将在发生更改时发送消息。
问题是如果我修改文件的内容,则不会调用连接到directoryChanged的“slot”函数,但仅在删除或添加文件或目录时才会调用。
但是,文档说当“指定路径上的目录被修改(例如,添加文件,修改或删除)或从磁盘中删除时,会发出此信号。”
有没有人有解释? 在此先感谢=)
答案 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