QFileSystemWatcher Class
QFileSystemWatcher 类为监控文件和目录的修改提供了一个接口。更多
头文件: | #include <QFileSystemWatcher> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
继承: | QObject |
- 所有成员的列表,包括继承成员
- QFileSystemWatcher 属于Input/Output 和 Networking。
注意:该类中的所有函数都是可重入的。
公共函数
QFileSystemWatcher(QObject *parent = nullptr) | |
QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr) | |
virtual | ~QFileSystemWatcher() |
bool | addPath(const QString &path) |
QStringList | addPaths(const QStringList &paths) |
QStringList | directories() const |
QStringList | files() const |
bool | removePath(const QString &path) |
QStringList | removePaths(const QStringList &paths) |
信号
void | directoryChanged(const QString &path) |
void | fileChanged(const QString &path) |
详细说明
QFileSystemWatcher 通过监视指定路径列表来监控文件系统中文件和目录的变化。
调用addPath() 可监视特定文件或目录。可以使用addPaths() 函数添加多个路径。使用removePath() 和removePaths() 函数可删除现有路径。
QFileSystemWatcher 会检查添加到它的每个路径。可以使用files() 函数访问已添加到 QFileSystemWatcher 的文件,使用directories() 函数访问目录。
当文件被修改、重命名或从磁盘中删除时,就会发出fileChanged() 信号。同样,当目录或其内容被修改或删除时,也会发出directoryChanged() 信号。请注意,一旦文件被重命名或从磁盘中删除,QFileSystemWatcher 就会停止监控文件;一旦目录被从磁盘中删除,QFileSystemWatcher 就会停止监控目录。
成员函数文档
QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)
用给定的parent 构建一个新的文件系统观察者对象。
QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)
使用给定的parent 构建一个新的文件系统观察者对象,该对象监控指定的paths 列表。
[virtual noexcept]
QFileSystemWatcher::~QFileSystemWatcher()
销毁文件系统监视器。
bool QFileSystemWatcher::addPath(const QString &path)
如果path 存在,则将path 添加到文件系统监视器。如果路径不存在,或者已经被文件系统监视器监视,则不会添加。
如果path 指定了一个目录,当path 被修改或从磁盘中删除时,将发出directoryChanged() 信号;否则,当path 被修改、重命名或删除时,将发出fileChanged() 信号。
如果监视成功,则返回 true。
监视失败的原因一般取决于系统,但可能包括资源不存在、访问失败或总监视次数限制(如果平台有限制)。
注意: 系统可能会限制可同时监控的文件和目录数量。如果达到此限制,将不会监控path ,并返回 false。
另请参阅 addPaths() 和removePath()。
QStringList QFileSystemWatcher::addPaths(const QStringList &paths)
将paths 中的每个路径添加到文件系统监视器。如果路径不存在,或者已经被文件系统监视器监视,则不会添加。
如果路径指定了一个目录,当路径被修改或从磁盘移除时,将发出directoryChanged() 信号;否则,当路径被修改、重命名或移除时,将发出fileChanged() 信号。
返回值是一个无法监视的路径列表。
监视失败的原因通常与系统有关,但可能包括资源不存在、访问失败或总监视次数限制(如果平台有此限制)。
注意: 系统可能会限制可同时监控的文件和目录数量。如果达到此限制,多余的paths 将不会被监控,它们将被添加到返回的QStringList 中。
另请参阅 addPath() 和removePaths()。
QStringList QFileSystemWatcher::directories() const
返回被监视目录的路径列表。
另请参见 files()。
[private signal]
void QFileSystemWatcher::directoryChanged(const QString &path)
当指定path 的目录被修改(如添加或删除文件)或从磁盘中删除时,会发出该信号。需要注意的是,如果在短时间内有多次更改,其中一些更改可能不会发出此信号。不过,更改序列中的最后一次更改总是会产生此信号。
注意: 这是一个私人信号。它可以在信号连接中使用,但用户不能发出。
另请参阅 fileChanged().
[private signal]
void QFileSystemWatcher::fileChanged(const QString &path)
当指定path 的文件被修改、重命名或从磁盘中删除时,就会发出该信号。
注: 作为一项安全措施,许多应用程序会通过写入新文件然后删除旧文件的方式保存打开的文件。在槽函数中,可以检查watcher.files().contains(path)
。如果返回false
,则检查文件是否仍然存在,然后调用addPath()
继续观察。
注意: 这是一个私人信号。它可以在信号连接中使用,但不能由用户发出。
另请参阅 directoryChanged() 。
QStringList QFileSystemWatcher::files() const
返回被监视文件的路径列表。
另请参见 directories()。
bool QFileSystemWatcher::removePath(const QString &path)
从文件系统监视器中移除指定的path 。
如果监视器成功移除,则返回 true。
监视移除失败的原因通常与系统有关,但也可能是由于路径已被删除等原因。
另请参阅 removePaths() 和addPath()。
QStringList QFileSystemWatcher::removePaths(const QStringList &paths)
从文件系统监视器中删除指定的paths 。
返回值是无法成功解除监视的路径列表。
移除监视失败的原因通常与系统有关,但也可能是由于路径已被删除等原因。
另请参阅 removePath() 和addPaths()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.