QFileSystemWatcher类通过监视指定路径的列表来监视文件系统对文件和目录的更改。
构造函数:

常用函数:
| addPath() | 添加路径 |
| addPaths() | 添加多个路径 |
| directory() | 返回正在监视的目录的路径列表 |
| files() | 返回正在监视的文件的路径列表 |
| removePath() | 删除路径 |
| removePaths() | 删除多个路径 |
常用的信号:
| directoryChanged() | 当指定路径的目录被修改,重命名或从磁盘中删除时 |
| filesChanged() | 当指定路径上的文件被修改、重命名或从磁盘中删除时 |
例子:
在Widget.h文件中添加:
- #include
//头文件 -
-
- 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("文件改变");
- }
- }
当你修改目录和文件时,会在控制台输出目录改变或文件改变