QFileSystemWatcher类通过监视指定路径的列表来监视文件系统对文件和目录的更改。
构造函数:
常用函数:
addPath() | 添加路径 |
addPaths() | 添加多个路径 |
directory() | 返回正在监视的目录的路径列表 |
files() | 返回正在监视的文件的路径列表 |
removePath() | 删除路径 |
removePaths() | 删除多个路径 |
常用的信号:
directoryChanged() | 当指定路径的目录被修改,重命名或从磁盘中删除时 |
filesChanged() | 当指定路径上的文件被修改、重命名或从磁盘中删除时 |
例子:
在Widget.h文件中添加:
#include<QFileSystemWatcher>//头文件
QFileSystemWatcher watch;//监视对象
void showMessage(const QString &Path);//显示信息的槽函数
在WIdget.cpp构造函数中添加:
QListWidget *list=new QListWidget(this);
list->setFixedSize(300,800);//设置大小
connect(&watch,&QFileSystemWatcher::directoryChanged,this,&Widget::showMessage);//目录改变时
connect(&watch,&QFileSystemWatcher::fileChanged,this,&Widget::showMessage);//文件改变时
QDir myDir(QDir::currentPath());//创建一个目录对象,获取当前路径的内容
watch.addPath(myDir.absolutePath());//监视该目录
QFile file(myDir.absolutePath()+"/file.txt");//在目录下创建一个文件,名为file.txt
list->addItems(myDir.entryList());//在ListWidget中显示
if(file.open(QIODevice::WriteOnly))
{
QFileInfo info(file);
list->addItem(info.absolutePath());//显示绝对路径
watch.addPath(info.absolutePath());//监视该文件
file.close();//关闭文件
}
槽函数的实现:
void Widget::showMessage(const QString &Path)
{
QDir dir(QDir::currentPath()+"/mydir");
if(Path==dir.absolutePath())
{
qDebug()<<tr("目录改变");
}
else
{
qDebug()<<tr("文件改变");
}
}
当你修改目录和文件时,会在控制台输出目录改变或文件改变