Qt 监测系统文件和文件夹变化QFileSystemWatcher

本文详细介绍如何使用QFileSystemWatcher来监视文件系统的变化,包括文件和目录的创建、修改和删除等事件。通过实例演示了如何设置监视器,连接信号和槽,以及如何响应文件或目录的改变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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("文件发生改变!"));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值