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("文件发生改变!"));
}
}
参考:http://blog.csdn.net/taiyang1987912/article/details/38301169