当前位置: 首页 > news >正文

ssh实训做网站代码下载怎样做号网站优化

ssh实训做网站代码下载,怎样做号网站优化,上海网站备案多久,平面设计专业的大专院校第三代软件开发-文件监视器 文章目录 第三代软件开发-文件监视器项目介绍文件监视器实现原理关于 QFileSystemWatcher实现代码 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML&…
头图

第三代软件开发-文件监视器

文章目录

  • 第三代软件开发-文件监视器
    • 项目介绍
    • 文件监视器
      • 实现原理
      • 关于 QFileSystemWatcher
      • 实现代码

关键字: QtQml关键字3关键字4关键字5

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏在第三代软开发更新完将涨价

文件监视器

如果你看过我前面【第三代软件开发-U盘监测】的话,在哪里会发现有一个文件监视器,指的就是这个模块

实现原理

如下图所示,其实就是在Qt的文件监视器基础上做了细分,支持之别是文件增加、减少和重命名。

关于 QFileSystemWatcher

QFileSystemWatcher是一个用于监视文件和目录变化的类。它是Qt框架中的一部分,用于跟踪文件系统中的文件和目录的变化,例如文件的创建、修改、删除以及目录的重命名等操作。

使用QFileSystemWatcher,您可以注册要监视的文件或目录,并在这些文件或目录发生变化时接收通知。它提供了一种方便的方式来监视文件系统的变化,以便及时响应这些变化。

QFileSystemWatcher可以用于许多不同的应用场景,例如:

  1. 自动更新:您可以使用QFileSystemWatcher来监视特定文件或目录的变化,并在文件或目录发生更改时自动触发更新操作。

  2. 日志记录:如果您需要监视日志文件的变化,您可以使用QFileSystemWatcher来实时检测文件的更新,并在文件发生变化时记录相关信息。

  3. 文件同步:如果您正在开发一个文件同步应用程序,您可以使用QFileSystemWatcher来监视源文件夹中的变化,并在文件发生更改时自动同步到目标文件夹。

使用QFileSystemWatcher非常简单。您只需创建一个QFileSystemWatcher对象,然后使用addPath()方法注册要监视的文件或目录的路径。当所监视的文件或目录发生变化时,QFileSystemWatcher会发出directoryChanged()或fileChanged()信号,您可以连接这些信号来处理相应的变化。

需要注意的是,QFileSystemWatcher的可用性取决于操作系统的支持。在某些操作系统上,QFileSystemWatcher可能无法监视某些特定的文件或目录变化。因此,在使用QFileSystemWatcher时,建议仔细查阅相关文档以了解其在目标平台上的限制和行为。

实现代码

代码基本不怎么复杂,直接上代码吧


#include <QObject>
#include <QDebug>#include <QMap>
#include <QFileSystemWatcher>
#include <QFileInfo>
#include <QDir>class XXXX : public QObject
{Q_OBJECT
public:explicit XXXX(QObject *parent = nullptr);void addWatchPath(QString path);void removeWatchPath(QString path);void getInitFile(QString path);public slots:void slotDirectoryUpdated(const QString &path);  // 目录更新时调用,path是监控的路径void slotFileUpdated(const QString &path);   // 文件被修改时调用,path是监控的路径signals:// 添加新文件/目录至Dirvoid signalAddFile(QString strFolder, QString strFile);// 从Dir中删除文件/目录void signalDeleteFile(QString strFolder, QString strFile);// 文件/目录重命名void signalRenamedFile(QString strFolder, QString strNewName, QString strOldName);private:
//    static XXXX *m_pInstance; // 单例QFileSystemWatcher* m_pSystemWatcher = nullptr;  // QFileSystemWatcher变量QMap<QString, QStringList> m_currentContentsMap; // 当前每个监控的内容目录列表};#endif // XXXX_H
#include "XXXX.h"
/*** @brief XXXX::XXXX* @param parent* 构造函数*/
XXXX::XXXX(QObject *parent) : QObject(parent)
{m_pSystemWatcher = new QFileSystemWatcher;// 连接QFileSystemWatcher的directoryChanged和fileChanged信号到相应的槽connect(m_pSystemWatcher,&QFileSystemWatcher::directoryChanged,this,&XXXX::slotDirectoryUpdated);connect(m_pSystemWatcher,&QFileSystemWatcher::fileChanged,this,&XXXX::slotFileUpdated);
}
/*** @brief XXXX::addWatchPath* @param path* 添加监控路径*/
void XXXX::addWatchPath(QString path)
{// 添加监控路径m_pSystemWatcher->addPath(path);// 如果添加路径是一个目录,保存当前内容列表QFileInfo file(path);if (file.isDir()){QDir dirw(path);m_currentContentsMap[path] = dirw.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files, QDir::DirsFirst);}
}
/*** @brief XXXX::removeWatchPath* @param path* 移除监控路径*/
void XXXX::removeWatchPath(QString path)
{m_pSystemWatcher->removePath(path);
}
/*** @brief XXXX::getInitFile* @param path* 获取初始文件*/
void XXXX::getInitFile(QString path)
{}
/*** @brief XXXX::slotDirectoryUpdated* @param path* 目录更新槽函数*/
void XXXX::slotDirectoryUpdated(const QString &path)
{// 比较最新的内容和保存的内容找出区别(变化)QStringList currEntryList = m_currentContentsMap[path];const QDir dir(path);QStringList newEntryList = dir.entryList(QDir::NoDotAndDotDot  | QDir::AllDirs | QDir::Files, QDir::DirsFirst);QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList);QSet<QString> currentDirSet = QSet<QString>::fromList(currEntryList);// 添加了文件QSet<QString> newFiles = newDirSet - currentDirSet;QStringList newFile = newFiles.toList();// 文件已被移除QSet<QString> deletedFiles = currentDirSet - newDirSet;QStringList deleteFile = deletedFiles.toList();// 更新当前设置m_currentContentsMap[path] = newEntryList;if (!newFile.isEmpty() && !deleteFile.isEmpty()){// 文件/目录重命名if ((newFile.count() == 1) && (deleteFile.count() == 1)){emit signalRenamedFile(path,newFile.first(),deleteFile.first());}}else{// 添加新文件/目录至Dirif (!newFile.isEmpty()){foreach (QString file, newFile){qDebug() << "新增文件路径:" << file;// 处理操作每个新文件....emit signalAddFile(path,file);}}// 从Dir中删除文件/目录if (!deleteFile.isEmpty()){foreach(QString file, deleteFile){// 处理操作每个被删除的文件....emit signalDeleteFile(path,file);}}}}
/*** @brief XXXX::slotFileUpdated* @param path* 文件更新*/
void XXXX::slotFileUpdated(const QString &path)
{QFileInfo file(path);QString strPath = file.absolutePath();QString strName = file.fileName();//    qDebug() << QString("The file %1 at path %2 is updated").arg(strName).arg(strPath);}

真的很简单,不用解释过多吧。这个不是我的原创,是我们公司小伙伴写的,我的智商能理解,我就认为你也理解,因为我和我小伙伴说要把我当成傻逼才行。


博客签名2021
http://www.yayakq.cn/news/402392/

相关文章:

  • 上海城乡建设厅网站百度框架户一级代理商
  • 钟祥网站建设云图书馆平台网站建设
  • 电商网站建设公司淄博网络科技有限公司
  • 网站上线需要怎么做外贸网址建站
  • 中企动力建设网站怎么样wordpress调用缩略图尺寸
  • 如何制作网站视频教程手机怎么网站建设
  • 深圳交易网站建设比较好的公关公司
  • 织梦淘宝客网站个人介绍网页模板免费下载
  • 网站公司用什么服务器网站建设深圳赶集网
  • 域名建议网站企业自建站案例
  • 网上接网站开发不给钱怎么办做网站的前途怎么样
  • 品网站建设公司排名信管女生做网站开发
  • 创意建设机械网站重庆江北网站建设公司
  • 德宏网站制作网站的工作简报怎么做
  • 做直播网站的上市公司用手机制作自己的网站
  • 建设银行不会自动弹出网站页面网站建设
  • 网站后台更新图片关键词排名优化易下拉霸屏
  • 网站开发建设方案的主要内容包括网页设计师培训需要多少钱
  • 网站界面设计的原则小程序开发平台好牌子推荐
  • 安徽网站建设商业营销厅装修公司
  • 网站建设培训招生机械网站优化
  • vs2017可以做网站吗建网站莱阳哪家强?
  • 滴滴优惠券网站怎么做土特产网站模板 织梦
  • 大淘客网站如何做制作山东定制网页建站
  • 群辉域名登录wordpressseo搜索引擎优化主要做什么
  • 网站改版代码电商网页设计与制作
  • 在国内做跨境电商怎么上外国网站绍兴专业网站建设
  • 应届生出来做网站还是做报纸好网站注册费
  • wordpress安装 打不开株洲seo优化报价
  • 延边州建设厅网站营销专业就业前景