QT 文件监视系统QFileSystemWatcher监视目录的改变directoryChanged和监视文件的改变fileChanged
QT 文件监视系统QFileSystemWatcher监视目录的改变
- 相关操作说明
- mainwindow.h
- mainwindow.cpp
- 调试结果
相关操作说明
添加头文件
Header:
#include
qmake:
QT += core
bool QFileSystemWatcher::addPath(const QString &path)
如果路径存在,则会向文件系统监视器添加路径。如果该路径不存在,或者该路径已被文件系统监视器监视,则不会添加该路径。
如果路径指定了一个目录,则当修改或从磁盘中删除路径时,将发出目录更改的directoryChanged()信号;
否则,当修改、重命名或删除路径时,将发出文件化的fileChanged()信号。
[static] QString QDir::currentPath()
返回应用程序的当前目录的绝对路径。
bool QDir::mkdir(const QString &dirName) const
创建一个名为目录名的子目录。
成功时返回true;否则将返回false。如果在调用此函数时该目录已经存在,则它将返回false。
QString QDir::path() const
returns the path. this may contain symbolic links, but never contains redundant “.”, “…” or multiple separators.
返回该路径。这可能包含符号链接,但从不包含冗余 "."
;, ".."
或多个分隔符。
[signal] void QFileSystemWatcher::directoryChanged(const QString &path)
当修改指定路径上的目录(例如,添加或删除文件)或从磁盘中删除时,就会发出此信号。请注意,如果在短时间内发生了多个更改,则某些更改可能不会发出此信号。然而,变化序列中的最后一个变化总是会产生这个信号。
注意
:这是一个私人信号。它可以用于信号连接,但不能由用户发出。
[signal] void QFileSystemWatcher::fileChanged(const QString &path)
当将指定路径上的文件从磁盘中进行修改、重命名或删除时,就会发出此信号。
注意:作为一种安全措施,许多应用程序通过编写一个新文件,然后删除一个旧文件来保存一个打开的文件。在插槽函数中,您可以检查watcher.files().contains(路径)。如果它返回false,请检查该文件是否仍然存在,然后调用添加路径()以继续监视它。
注意
:这是一个私人信号。它可以用于信号连接,但不能由用户发出。
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QFileDialog>
#include <QFile>
#include <QFileSystemWatcher>
#include <QMessageBox>
#include <QVBoxLayout>
#include <QLabel>
#include <QDebug>
#include <QApplication>
#include <QDateTime>
#include <QDir>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();
public slots:void DirChanged( QString path);void FileChanged(QString filename);private:QFileSystemWatcher filewatcher;//文件系统监视对象QLabel *label;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{QStringList list = qApp->arguments();//获取行参数qDebug()<<"\nlist = "<<list.size();for (int i=0;i<list.size();i++) {qDebug()<<"i="<<i<<"list = "<<list.at(i);}QString strpath;if(list.count() > 1)strpath = list.at(1);elsestrpath = QDir::currentPath();//当前工程路径qDebug()<<"\nstrpath = "<<strpath;label = new QLabel(this);label->setFixedSize(100,100);label->setWordWrap(true);label->setText(tr("监视目录为:\n")+strpath);this->setFixedSize(QSize(500,500));filewatcher.addPath(strpath); //添加系统监控路径QDir dir;dir.cd(QDir::currentPath()); //进入当前目录dir.mkdir("ddd"); //创建文件夹//dir.cdUp(); //进入上一级目录qDebug()<<"path = "<<dir.path();QFile file;file.setFileName(QDir::currentPath()+"/ddd/"+"w.txt");//在ddd/创建文本文件bool isopen = file.open(QIODevice::WriteOnly | QIODevice::Text);if(!isopen){qDebug()<<"文件打开失败";return;}filewatcher.addPath(file.fileName());connect(&filewatcher,SIGNAL(directoryChanged( QString)),this,SLOT(DirChanged( QString)));connect(&filewatcher,SIGNAL(fileChanged( QString)),this,SLOT(FileChanged( QString)));
}MainWindow::~MainWindow()
{
}//创建目录 或者 创建目录等会监控到弹出警告框
void MainWindow::DirChanged(QString path)
{qDebug()<<"path = "<<path;//当前目录路径QMessageBox::warning(NULL,"系统监控目录变化",path);
}//当修改、重命名或删除文件时
void MainWindow::FileChanged(QString filename)
{qDebug()<<"filename = "<<filename;//当前目录路径QMessageBox::critical(NULL,"系统监控目录文本文件变化",filename);
}
调试结果
修改目录 删除 重命名等
修改文件 删除 重命名等
相关文章:
QT 文件监视系统QFileSystemWatcher监视目录的改变directoryChanged和监视文件的改变fileChanged
QT 文件监视系统QFileSystemWatcher监视目录的改变相关操作说明mainwindow.hmainwindow.cpp调试结果相关操作说明 添加头文件 Header: #include qmake: QT core bool QFileSystemWatcher::addPath(const QString &path)如果路径存在,则会向文件系统监视器添…...
Typescript基础知识(类型断言、类型别名、字符串字面量类型、枚举、交叉类型)
系列文章目录 引入一:Typescript基础引入(基础类型、元组、枚举) 引入二:Typescript面向对象引入(接口、类、多态、重写、抽象类、访问修饰符) 第一章:Typescript基础知识(Typescri…...
Windows系统扩充C盘空间系列方法总结
目录前言方法一 使用自带的Windows的DiskPart扩充C盘1. 打开cmd2.三步命令方法二:使用Windows系统内置磁盘管理扩展C盘方法三. 使用专业磁盘分区工具总结前言 本教程是总结Windows系统进行C盘(系统盘)扩充空间的系列方法,一般来讲…...
华为OD机试 - 跳格子(Python)
跳格子 题目 地上共有N个格子,你需要跳完地上所有的格子, 但是格子间是有强依赖关系的,跳完前一个格子后, 后续的格子才会被开启,格子间的依赖关系由多组steps数组给出, steps[0]表示前一个格子,steps[1]表示steps[0]可以开启的格子: 比如[0,1]表示从跳完第0个格子以后…...
Java配置文件的值注入
1.平常使用直接在变量头上加上Value就可以把配置文件的值注入进来 Value(“${environment.active}”) private String environment; 2.但是变量使用static修饰时,就不能注入进来了 Value(“${environment.active}”) private static String environment; 这是因…...
SAP 订单BOM与销售BOM的区别
订单BOM与销售BOM的区别 訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM 銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的. 標準BOM: 是公司為標準生產的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的…...
支付宝支付详细流程
1、二维码的生成二维码生成坐标 <!-- zxing生成二维码 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>co…...
TCP 的演化史-fast retransmit/recovery
工作原因要对一个 newreno 实现增加 sack 支持。尝试写了 3 天 C,同时一遍又一遍梳理 sack 标准演进。这些东西我早就了解,但涉及落地写实现,就得不断抠细节,试图写一个完备的实现。 这事有更简单的方法。根本没必要完全实现 RFC…...
CSS基础选择器,你认识多少?
前言在上一文初识CSS中,我们了解到了其格式:选择器{ }在初步尝试使用时,我们笼统的直接输入了p { }以选择p标签来对其操作,而这一章节里,我们再进一步探索有关基础选择器的相关内容,理解选择器的作用。选择…...
ChatGPT入门案例|商务智能对话客服(三)
本篇介绍智能客服的基本功能架构和基本概念,并利用对话流技术构建商务智能应用。 01、商务智能客服功能结构 互联网的发展已经深入到社会的各个方面,智能化发展已经成为社会发展的大趋势。在大数据和互联网时代,企业和组织愈加重视客户沟通…...
Matlab 最小二乘法拟合平面(SVD)
文章目录 一、简介1.1最小二乘法拟合平面1.2 SVD角度二、实现代码三、实现效果参考资料一、简介 1.1最小二乘法拟合平面 之前我们使用过最为经典的方式对平面进行了最小二乘拟合(点云最小二乘法拟合平面),其推导过程如下所示: 仔细观察一下可以发现...
AtCoder Regular Contest 126 D题题解
思路 首先我们看看假设选中 mmm 个数后的答案。 我们首先现将 mmm 个数移动到一起,在将他们重新排序。 我们知道,mmm 个数移在一起时,当位于中间的那个数不动时交换次数最少,于是可以列出式子(cic_ici 是点 iii 的…...
Android R WiFi热点流程浅析
Android R WiFi热点流程浅析 Android上的WiFi SoftAp功能是用户常用的功能之一,它能让我们分享手机的网络给其他设备使用。 那Android系统是如何实现SoftAp的呢,这里在FWK层面做一个简要的流程分析,供自己记录和大家参考。 以Android R版本为…...
【C++进阶】二、多态详解(总)
目录 一、多态的概念 二、多态的定义及实现 2.1 多态的构成条件 2.2 虚函数 2.3 虚函数的重写 2.4 虚函数重写的两个例外 2.4.1 协变 2.4.2 析构函数的重写 2.5 C11 override 和 final 2.5.1 final 2.5.2 override 2.6 重载、覆盖(重写)、隐藏(重定义)的对比 三、…...
node-sass@4.14.1 包含风险, 如何升级依赖至 dart-sass
文章目录需求我上网都查到了哪些信息在 github 看到了 node-sass 依赖的最新版本的列表:关于方案2的失败不同版本的 nodejs 和 node-sass依赖的**适配关系**从何得知替代方案——dart-sass如何安装 dart sass?需求 在做一个基于Node、React的前端项目&a…...
DataWhale 大数据处理技术组队学习task2
三、Hadoop分布式文件系统 1. 产生背景 数据量越来越大,一台独立的计算机已经无法存储所有的数据---->将大规模的数据存储到成百上千的计算机中------为了解决数据管理以及维护极其繁琐与低效------>分布式文件系统 分布式文件系统是管理网络中跨多台计算机…...
一文读懂select、poll、epoll的用法
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,…...
《C陷阱与缺陷》----词法“陷阱”
导言: 由于一个程序错误可以从不同层面采用不同方式进行考察,而根据程序错误与考察程序的方式之间的相关性,可以将程序错误进行划分为各种陷阱与缺陷: ①.词法“陷阱” ②.语法“陷阱” ③.语义“陷阱” ④.连接问题 ⑤.库函数问…...
千锋教育+计算机四级网络-计算机网络学习-04
UDP概述 UDP协议 面向无连接的用户数据报协议,在传输数据前不需要先建立连接;目地主机的运输层收到UDP报文后,不需要给出任何确认 UDP特点 相比TCP速度稍快些简单的请求/应答应用程序可以使用UDP对于海量数据传输不应该使用UDP广播和多播应用…...
蓝桥杯算法训练合集十四 1.P08052.P07053.同余方程4.P08015.ascii应用
目录 1.P0805 2.P0705 3.同余方程 4.P0801 5.ascii应用 1.P0805 问题描述 当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数&…...
判断字符串中的字符的类型isdecimal();isalpha();isdigit();isalnum()
【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断字符串中的字符的类型 isdecimal();isalpha();isdigit();isalnum() [太阳]选择题 对于代码中isdecimal()和isalnum()输出的结果是? s "ABc123&…...
VSCode远程调试Linux代码,python解释器配置
安装插件并配置 安装后找到插件图标,点击 点击SSH上的 号 在弹出框中输入命令:ssh usernameip -p port username: 远程服务器的用户名 ip: 远程ip port:端口号,没有可以不用 输入完毕后点击enter 选择ssh配置文件保存…...
03:入门篇 - CTK Plugin Framework 基本原理
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 CTK Plugin Framework 技术是面向 C++ 的动态模型系统。该系统允许插件之间的松散耦合,并且提供了设计良好的方式来进行功能和数据的交互。此外,它没有预先对插件施加限制,这样就可以很容易地将插件的相关…...
面试攻略,Java 基础面试 100 问(九)
数组有没有 length()方法?String 有没有 length()方法? 数组没有 length()方法,有 length 的属性。String 有 length()方法。JavaScript 中,获得字符串的长度是通过 length 属性得到的,这一点容易和 Java混淆。 在 Java 中&…...
JavaScript 代码不嵌套主义
文章目录前言一、何为嵌套代码二、避免嵌套1.提炼抽取2.反转排列总结前言 看过不少过度嵌套的代码, 我真正意识到问题的严重性是刚入职那会, 我在一个老项目里看到了40个连续的else if, 套了6层的if, for和forEach, 因为我们并没有做什么限制代码嵌套的提前约定. 呃, 那之后认…...
使用默认参数的4大要点
概述 默认参数是C中新增的特性。在C中,可以为函数的参数指定默认值。调用函数时,如果没有指定实参,则自动使用默认参数。默认参数的基本语法这里就不作介绍了,下面重点介绍使用默认参数的一些知识要点。 基本规则 1、当函数中某个…...
Linux文件系统中的硬链接及常见面试题
如果能对inode的概念有所了解,对理解本文会有所帮助。如果对inode的概念不太清楚也没有关系,我们会捎带介绍一下。在文件系统的实现层面,我们可以认为包含两个组件:一个是包含数据块的池子,池子中的数据块是等大小的&a…...
opencv-StereoBM算法
原理解释目前立体匹配算法是计算机视觉中的一个难点和热点,算法很多,但是一般的步骤是:A、匹配代价计算匹配代价计算是整个立体匹配算法的基础,实际是对不同视差下进行灰度相似性测量。常见的方法有灰度差的平方SD(squ…...
图像分类竞赛进阶技能:OpenAI-CLIP使用范例
OpenAI-CLIP 官方介绍 尽管深度学习已经彻底改变了计算机视觉,但目前的方法存在几个主要问题:典型的视觉数据集是劳动密集型的,创建成本高,同时只教授一组狭窄的视觉概念;标准视觉模型擅长于一项任务且仅擅长于一项任务,并且需要大…...
Metasploit框架基础(一)
文章目录前言一、基础认知二、批量POC/EXP的构想三、poc检测框架的简单实现四、xray五、Meatsploit框架参考前言 Metasploit 一款渗透测试框架漏洞利用的集合与构建和定制满足你的需求的基础漏洞利用和验证的工具 这几个说法都是百度或者官方文档中出现的手法,说…...
网站怎样做301/百度快照入口
前言很多童鞋没有系统的Unity3D游戏开发基础,也不知道从何开始学。为此我们精选了一套国外优秀的Unity3D游戏开发教程,翻译整理后放送给大家,教您从零开始一步一步掌握Unity3D游戏开发。 本文不是广告,不是推广,是免费…...
wordpress插件的作用/十大中文网站排名
为了画个图,被numpy这个模块的安装真的折腾疯了!!!一直装不上,花了几个小时,看了网上的很多教程、方法发现总结得不是很全,这里总结一下,防止大家再出现这个问题没有解决方法。Pytho…...
包装产品做网站/今日头条新闻推荐
大学的学习,相比高中需要做出重大的改变。由大家都一样的教育,转而到专业教育,结合专业特点安排学习,也可能要有不小的改变。然而,人从娘胎中带来的改变本能随着长大却被保守所代替,明知一些问题存在&#…...
怎么做可以看外国视频网站/最近的新闻大事
Docker-compose overview 文章目录Docker-compose overview1. 简介2. 使用步骤3. 生命周期4. 特色1. 简介 docker-ompose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 docker-compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用…...
wordpress可选模式主题/搜索引擎排名影响因素有哪些
2019独角兽企业重金招聘Python工程师标准>>> 六个控制台 CtrlAltF1~F6 UI CtrlAltF7 转载于:https://my.oschina.net/lgl88911/blog/138228...
网站建设的流程图示/淘宝站外引流推广方法
重构学习笔记1. 封装集合 概念:本文所讲的封装集合就是把集合进行封装,只提供调用端需要的接口。 正文:在很多时候,我们…...