文件( QDir + QFileSystemWatcher操作)

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    // 进行文件系统监视器的信号和槽的关联
    connect(&m_fileSysWatcher, SIGNAL(directoryChanged(QString)),this,SLOT(showMessageDir(QString)));
    connect(&m_fileSysWatcher, SIGNAL(fileChanged(QString)),this,SLOT(showMessageFile(QString)));

    QDir dir(QDir::currentPath());
    // 设置文件过滤器
    dir.setNameFilters(QStringList("*.h"));
    ui->listWidget->addItem(dir.absolutePath() + "all '.h' files:");
    ui->listWidget->addItems(dir.entryList());

    // 创建目录并且cd过去
    dir.mkdir("newdir");
    dir.cd("newdir");
    // 显示当前监视目录
    ui->listWidget->addItem("now watching dir is : " + dir.absolutePath());

    // 为 watcher 设置需要监视的目录
    m_fileSysWatcher.addPath(dir.absolutePath());
    // 为 watcher 设置需要监视的文件
    QFile file(dir.absolutePath() + "/test.txt");
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    QFileInfo info(file);
    m_fileSysWatcher.addPath(info.absoluteFilePath());
    ui->listWidget->addItem("now watching file is : " + info.absoluteFilePath());
    file.close();

}

Widget::~Widget()
{
    delete ui;
}

void Widget::showMessageDir(const QString &path)
{
    ui->listWidget->addItem("dir changed: " + path);
}

void Widget::showMessageFile(const QString &path)
{
    ui->listWidget->addItem("file changed: " + path);
}

当 newdir 下文件改变内容或者文件数目等发生改变的时候,就会触发 directoryChanged 信号,文件内容改变自会触发 fileChanged 信号!

 

参考:

不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=78193&ctid=447

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sssnial-jz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值