Qt5开发从入门到精通——第九篇六节( Qt5 文件及磁盘处理—— 监视文件和目录变化)

CSDN话题挑战赛第2期
参赛话题:学习笔记

前言

一、监视文件和目录变化概述

在 Qt 中可以使用 QFileSystemWatcher 类监视文件和目录的改变。在使用 addPath() 函数监视指定的文件和目录时,如果需要监视多个目录,则可以使用 addPaths()函数加入监视。若要移除不需要监视的目录,则可以使用 removePath()和 removePaths()函数 。
当监视的文件被修改或删除时,产生一个 fileChanged()信号 。 如果所监视的目录被改变或删除,则产生 directoryChanged()信号。
Qt 提供了 QFile 类用于进行文件操作。 QFile 类提供了读写文件的接口,可以读写文本文件、二进制文件和 Qt 的资源文件。
处理文本文件和二进制文件,可以使用 QTextStream 类和 QDataStream 类。处理临时文件可以使用 QTemporaryFile, 获取文件信息可以使用 QFilelnfo, 处理目录可以使用 QDir, 监视文件和目录变化可以使用 QFileSystemWatcher 。

二、效果实例

图一
新建文件或者删除文件会触发“目录发生变化”

在这里插入图片描述
图二
在这里插入图片描述

三、原码实例

watcher.h

#ifndef WATCHER_H
#define WATCHER_H

#include <QWidget>
#include <QLabel>
#include <QFileSystemWatcher>

class watcher : public QWidget
{
    Q_OBJECT

public:
    watcher(QWidget *parent = 0);
    ~watcher();
public slots:
    void directoryChanged(QString path);
private:
    QLabel *pathLabel;
    QFileSystemWatcher fsWatcher;

};

#endif // WATCHER_H

main.cpp

#include "watcher.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    watcher w;
    w.show();

    return a.exec();
}

watcher.cpp

#include "watcher.h"
#include <QVBoxLayout>
#include <QDir>
#include <QMessageBox>
#include <QApplication>
watcher::watcher(QWidget *parent)
    : QWidget(parent)
{
    QStringList args=qApp->arguments();
    QString path;
    if (args.count()>1)  /*读取命令行指定的目录作为监视目录。如果没有指定,则监视当前目录。*/
    {
        path=args[1];
    }else
    {
        path=QDir::currentPath();
    }
    pathLabel = new QLabel;
    pathLabel->setText(tr(" 监视的目录: ")+path);
    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(pathLabel);
    fsWatcher.addPath(path);
    /*将目录的 directoryChangedO信号与响应函数 directoryChangedO连接。*/
    connect(&fsWatcher,SIGNAL(directoryChanged(QString)),this,SLOT(directoryChanged(QString)));

}

watcher::~watcher()
{

}

/*响应函数 directoryChangedO使用消息对话框提示用户目录发生了改变,*/
void watcher::directoryChanged(QString path)
{
   //QMessageBox::information(NULL,tr(" 目录发生变化 "),path);
    pathLabel->setText(tr(" 目录发生变化: ")+path);
}


四、总结

Qt5 文件及磁盘处理—— 监视文件和目录变化会在应用程序开发中经常用到的。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东.'

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

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

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

打赏作者

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

抵扣说明:

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

余额充值