在项目开发中,经常会遇到这样的问题:
当外部文件或文件夹被修改了,主程序如何马上知道文件已经被修改了呢?
一般情况,第一反应就是在程序中加入定时器,再约定时间间隔,定时检测文件状态,如果发现文件已经被修改,则发出信号,通知程序作相应处理。
但是,这样做很繁琐,不简洁,并且也比较耗性能,今天小豆君就来介绍下Qt是如何处理这种情况的。
下面,是我们的QFileSystemWatcher出场的时候了,哈,一看名字就很让人印象深刻,直接中式翻译“文件系统监视器”,顾名思义,就是监视文件系统变化的一个“小机器”。
那么,我们再来看一下这个类是继承谁的
喝,直接就是QObject,并且这家伙属性也没有。
那么,我们再看一下它的信号吧
目录改变信号,文件改变信号,参数分别是各自的路径。这货原来也可以监视目录变化,真是够周到的。
下面小豆君只讲文件的,对于文件夹大家类比即可。
那么,我该如何监视文件变化呢,你可以直接调用addPath()方法添加需要监视的文件,再调用connect函数连接fileChanged()信号和自定义槽,那么当文件发生变化时,就可以采取动作了,就是这么简单。
那有的小伙伴又要问了,那如果要监视多个文件呢,简单,Qt已经为你想