Qt提供了目录文件变动检测功能的类QFileSystemWatcher,使用该类要想添加头文件
#include <QFileSystemWatcher>
先看看他的源码:
bool addPath(const QString &file);
QStringList addPaths(const QStringList &files);
bool removePath(const QString &file);
QStringList removePaths(const QStringList &files);
QStringList files() const;
QStringList directories() const;
Q_SIGNALS:
void fileChanged(const QString &path, QPrivateSignal);
void directoryChanged(const QString &path, QPrivateSignal);
信号:directoryChanged 是监控提供的目录的变化
addPath:给QFileSystemWatcher兑现添加目录
下面的demo提供了目录文件变动的检测功能,用法如下:
(1)先声明对象 QFileSystemWatcher m_FileWatcher;
(2)添加需要监控的目录 m_FileWatcher.addPath(path);
(3)绑定信号槽
//监视目录中的文件是否变化
connect(&m_FileWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(onDirectoryChaned(QString)));
可以在槽函数做相应的处理,我只做了个提示,其它功能可以自行添加,例如读取,上传,备份等,在一些安防项目会用到。
void Widget::onDirectoryChaned(QString path)
{
QMessageBox::information(this, tr("提示"), path + tr(" 目录文件有改动"), NULL);
}
打开相应目录后,如果在往目录中添加文件,则会有提示,界面如下:
本例子的全部代码:https://gitee.com/qwerwo/QtFileMonitor