QFileSystemWatcher
来源:互联网 发布:python升级到2.7 pip 编辑:程序博客网 时间:2024/06/01 22:13
Use Case: 两个程序共享同一个Configuration文件,当一个程序作出改变的时候,需要另外一个程序能够及时响应。
之前其实猜的八九不离十,估计是有一个Timer,然后定时查询Configuration文件是否改变。
今天兴趣来了,正好一看,果然,同时也感慨Qt之博大精深。
废话莫谈,那我们就看看内部机制吧:
-----------------------------------------------------
Qt提供了QFileSystemWatcher类来监视文件和目录的改变。
addPath/addPaths:
设置需要监视的文件和目录
removePath/removePaths:
移除不需要监视的目录.
Signals:
当监视的文件被修改或删除时,产生一个fileChanged()信号。
如果被监视的目录被改变或删除,产生 directoryChanged()信号。
Q_SIGNALS: void fileChanged(const QString &path); void directoryChanged(const QString &path);
来源:
Timer:
void QPollingFileSystemWatcherEngine::run(){ QTimer timer; connect(&timer, SIGNAL(timeout()), SLOT(timeout())); timer.start(PollingInterval); (void) exec();}
文件比较,基本上就看文件属性有没有改变:
class FileInfo { uint ownerId; uint groupId; QFile::Permissions permissions; QDateTime lastModified; QStringList entries; public: FileInfo(const QFileInfo &fileInfo) : ownerId(fileInfo.ownerId()), groupId(fileInfo.groupId()), permissions(fileInfo.permissions()), lastModified(fileInfo.lastModified()) { if (fileInfo.isDir()) { entries = fileInfo.absoluteDir().entryList(QDir::AllEntries); } } FileInfo &operator=(const QFileInfo &fileInfo) { *this = FileInfo(fileInfo); return *this; } bool operator!=(const QFileInfo &fileInfo) const { if (fileInfo.isDir() && entries != fileInfo.absoluteDir().entryList(QDir::AllEntries)) return true; return (ownerId != fileInfo.ownerId() || groupId != fileInfo.groupId() || permissions != fileInfo.permissions() || lastModified != fileInfo.lastModified()); } };
- Piaoger
- QFileSystemWatcher
- QFileSystemWatcher 使用
- QFileSystemWatcher缺少main.cpp
- QT之QFileSystemWatcher使用
- Qt之QFileSystemWatcher
- QFileSystemWatcher使用整理
- QFileSystemWatcher Qt 实现文件监测
- Qt监测系统文件变化QFileSystemWatcher
- 使用QFileSystemWatcher监控磁盘文件状态变化
- matlab启动时为什么一闪而过
- 新浪微博客户端源代码-新浪微博OAuth2.0接口--回调地址未填而出现第三方调用错误解决方法
- 修改之前代码复数的除法部分
- Android简单逐帧动画Frame的实现
- Iphone开发基础教程 example5 自动旋转
- QFileSystemWatcher
- C++和C#中的回调函数解析
- Linux 中的IPC(一)-----简介
- 不同发展阶段所对应的分公司存续形式的操作实务
- 程序员编程艺术(算法卷):第一章、左旋转字符串
- 原始套接字
- 分公司的设立程序及所需要件
- DBA日常工作
- 分子公司