本文主要是介绍Qt 监测系统文件和文件夹变化QFileSystemWatcher,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
QFileSystemWatcher文件系统监视器
#include <QFileSystemWatcher>
#include <QDir>
private:
Ui::Widget *ui;
QPoint relativePos;
QFileSystemWatcher myWatcher;
private slots:
void showMessage(const QString &path);
// 将监视器的信号和自定义的槽进行关联
connect(&myWatcher, SIGNAL(directoryChanged(QString)), this, SLOT(showMessage(QString)));connect(&myWatcher, SIGNAL(fileChanged(QString)), this, SLOT(showMessage(QString)));// 显示出当前目录下的所有.h文件QDir myDir(QDir::currentPath());myDir.setNameFilters(QStringList("*.h"));ui->listWidget->addItem(myDir.absolutePath() + tr("目录下的.h文件有:"));ui->listWidget->addItems(myDir.entryList());// 创建目录,并将其加入到监视器中myDir.mkdir("mydir");myDir.cd("mydir");ui->listWidget->addItem(tr("监视的目录:") + myDir.absolutePath());myWatcher.addPath(myDir.absolutePath());// 创建文件,并将其加入到监视器中QFile file(myDir.absolutePath() + "/myfile.txt");if (file.open(QIODevice::WriteOnly)) {QFileInfo info(file);ui->listWidget->addItem(tr("监视的文件:") + info.absoluteFilePath());myWatcher.addPath(info.absoluteFilePath());file.close();}
// 显示文件或目录改变信息
void Widget::showMessage(const QString &path)
{
QDir dir(QDir::currentPath() + "/mydir");
// 如果是目录发生了改变
if (path == dir.absolutePath()) {
ui->listWidget->addItem(dir.dirName() + tr("目录发生改变: "));
ui->listWidget->addItems(dir.entryList());
} else { // 如果是文件发生了改变
ui->listWidget->addItem(path + tr("文件发生改变!"));
}
}
这篇关于Qt 监测系统文件和文件夹变化QFileSystemWatcher的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!