11 Star 55 Fork 30

龙少 / qlpmsp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MPL-2.0

修订记录

修订状态 修订人 修订日期 修订简要概述 更改单号
1.0.0 陈龙 2020-08-18 项目创立
1.0.1 陈龙 2020-08-19 项目搭建,日志、插件、语言、主题等功能
1.0.2 陈龙 2020-08-21 插件测试
1.0.3 陈龙 2020-08-28 增加登录功能,整理并绘制程序框图、撰写说明文档
1.0.4 陈龙 2020-08-31 修改项目路径,区分代码、文档、发布程序、第三方依赖
1.0.5 陈龙 2020-09-10 编写开发日志,设计数据库,整理项目思路,检查并修复 bug
1.0.6 陈龙 2020-09-16 增加插件间关系,插件管理器嵌套等
1.0.7 陈龙 2020-09-30 完善插件管理器嵌套功能,同步子插件独立日志系统,修改样式表
1.0.8 陈龙 2020-11-05 多级插件管理器界面及其他部分 bug 修复,优化架构、主题库、日志库等
1.0.9 陈龙 2020-12-11 更新样式表、优化插件管理器界面尺寸自适应功能
1.1.0 陈龙 2020-12-23 1. 优化插件管理器:超长插件名过长显示省略号;
2. 修改 readme 文档: txt 改为 md ;
3. 优化底层库:
3.1 Udp 优化;
3.2 增加 FFT 支持;
3.3 绘图底层优化:可添加背景图片,优化缩进方式等;
3.4 用户系统优化
4. Qt 开发版本变更:5.5.0 ~ 5.14.2;
5. 增加 FFT 和 QLsCustomPlot 测试插件;
6. 数据库新增支持 Qt 自带的 SQLite ,可在配置文件中进行切换;
1.1.1 陈龙 2020-12-25 将数据库和语言系统从外部引用整合进底层库
1.1.2 陈龙 2021-01-07 1. 增加第三方控件库Form;
2. 修复Qt5的bug:插件界面太大时,初始加载最大化失效,需要移动一下才能恢复正常;
3. 创建QtCreator自定义模板qlsplugin,方便插件开发;
1.1.3 陈龙 2021-01-15 1. 优化 TcpClient ;
2. 优化配置文件读取,设定配置文件格式为 UTF-8 ;
3. 优化日志库加载顺序,修复初始化阶段 ui 界面不打印日志问题。
1.1.4 陈龙 2021-03-15 1. 增加 MATLAB 2012 32&64bit 第三方环境 ;
2. 优化 QLsCustomPlot 绘图功能:光标划过曲线显示点的坐标;
3. 增加 CAN 驱动接口;
1.1.5 陈龙 2021-04-13 1. QLsCustomPlot 优化单击事件处理:右键单击不会打断单击事件;
2. 增加QLsAV库:支持音视频播放功能,基于 FFMPEG 和 SDL2 ;
3. 增加 QLsFunc 库:通用自定义功能模块;
4. 增加音视频测试插件;去掉QLsTest测试插件;
1.1.6 陈龙 2021-04-14 1. 升级 QLsFunc :增加根据窗口标题获取进程 ID 功能;增加打开并嵌入 PPT 、 Word 功能;
2. 修改数据库 DAO 层:字段从 protected 移到 private ;
3. 优化插件管理架构:针对单一插件业务,却显示了主界面标题和插件管理器标签栏两个标题栏的情况,在插件配置文件中(例: ini/plugins/QCoreSystem.ini)中,新增配置项"pluginsManager/hideTabBar",可隐藏插件管理器的标签栏;
1.1.7 陈龙 2021-04-15 1. 修改主控界面阴影边框的方式,从 QGraphicsDropShadowEffect 改为 QPainter 自绘。本次主要解决了 QLsAVWidget 中底部控制栏自动显隐时通过 QGraphicsDropShadowEffect 设置透明度没反应的冲突;
2. 优化 QLsFunc :打开并嵌入 PPT 、 Word 时,增加 [只读][兼容模式]等打开方式的兼容性;
1.2.0 陈龙 2022-05-05 将编译模块从 qmake 重构为 cmake,除插件以外其他模块都适配完毕
1.2.1 陈龙 2022-06-13 1. 增加 settings 系统设置: 留出设置安装路径和工作路径接口; 规范各个模块路径及配置文件内容;
2. 引用 CPM-cmake 模块,可通过 cmake 联网自动下载并配置依赖库; 适配 av_player, av_widget 库; 适配 av_demo, plugin_test 测试插件;
3. 优化插件接口:去掉最小尺寸变化接口,去掉绑定信号槽变化接口,将插件配置信息接口改为元数据获取;
4. 优化 build 路径:将 cache, config, database, log 资源移到 ~/qlpmsp/ 路径下; cmake 插件动态库自动链接到 build/lib/${plugins_dir} ; 整理主题图标等资源文件,放到 build/resources/themes/ 下, 优化主题管理系统(目前只适配了主系统主题,剩下通过 DBus 通知子插件,使其适配主系统主题;); 语言包自动生成在 build/translations/ 下;
1.2.2 陈龙 2023-10-27 1. 增加 OpenGL 渲染模块插件;
2. 默认主窗口不再无边框;
3. 优化最大化逻辑;
4. 升级 CPM 至 0.38.6;

概述

标识

  • 名称:Qt 插件管理系统
  • 版本:QLSPMSP-1.2.2
  • 作者:龙少 - ls56647426@foxmail.com
  • 编译环境:Win10, Qt5.14.2(gcc_64), cmake 3.20.5, Ubuntu 16.04.3
  • 编程语言:C++, Qt
  • 创建时间:2020-08-18 15:17
  • 最后修改时间:2023-10-27 22:41

功能

插件管理器

插件模块的加载、卸载;插件间关系、通信;管理插件的生存周期等等……

主题管理器

切换主题;与插件管理器配合,不同插件可拥有独自的主题,也可继承父插件的主题。

日志系统

单例日志系统,支持 6 种日志等级、日志输出方式(日志文件路径、Qt 窗口显示等)……

语言系统

单例语言管理,可切换软件界面语言,每次切换重启后生效。

用户系统

管理用户信息,如登录、注册、修改、找回以及插件内涉及用户操作的地方。

设置系统

设置软件的配置信息,如插件路径、日志路径、用户缓存路径、插件记录等等。
界面暂未实现

扩展插件

  1. OpenGL 渲染模块插件
  2. 音视频播放插件

项目组成

系统架构


系统架构图

应用层

主控系统

主控系统整体分为三部分:标题栏、插件界面、日志。

  • 标题栏包含图标、标题、设置、最小化、最大化、关闭;

  • 插件界面是一个插件管理器,其中插件管理界面与标签栏可设置显隐;

    • 在配置文件../config/plugins/xxx.ini中,配置内容为:

      [pluginsManager]
      # 隐藏标签栏为否
      hideTabBar=0
      # 显示插件管理器界面为是
      show=1
  • 最底端为日志界面,可通过设置日志级别,显示符合各个等级的日志记录。


主控系统

扩展插件

扩展插件可通过插件管理器,嵌入到主控系统的界面上,通过插件管理进行加载和卸载。


扩展插件

应用框架层

应用框架层集成了一些系统功能的 UI 界面,应用层可通过应用框架层的界面显示、操作底层的各个功能。

用户登录

  • 用户功能可配置显隐,若隐藏则本系统无需使用用户功能直接使用。

    • ~/qlpmsp/config/qlpmsp.ini中,配置内容为:

      [login]
      # 登陆功能设为启动
      enable=true
  • 用户登录界面包含登录、记住密码、自动登录、注册账号、找回密码、修改密码等功能。


用户登录界面

插件管理器

设置

驱动层

数据库连接池

主题管理系统

插件管理系统

语言管理系统

日志系统

设置系统

数据

数据库

主题

插件

语言包

日志

配置文件

源码目录

qlpmsp/
├─code/                         # 代码
│  ├─bin/                       # 生成的库、可执行程序:.dll .a .exe
│  │  └─debug/ & release/       # 调试版本 & 发布版本
│  │     ├─cache/               # 缓存
│  │     ├─databases/           # 本地数据库
│  │     │  └─sqlite/           # 本地 SQLite 数据库
│  │     ├─icon/                # 图标库
│  │     ├─ini/                 # 配置文件
│  │     ├─language/            # 语言包
│  │     ├─log/                 # 日志库
│  │     ├─plugins/             # 插件库
│  │     └─themes/              # 主题样式表
│  ├─inc/                       # 引用(常用底层实现)
│  │  ├─Check/                  # 校验
│  │  ├─Controls/               # 绘图
│  │  ├─FFT/                    # FFT 支持(离散傅立叶变换的快速算法)
│  │  ├─Form/                   # 自定义/第三方 控件
│  │  ├─QLsAV/                  # 音视频播放
│  │  ├─QLsFunc/                # 自定义功能模块
│  │  ├─SerialPort/             # 串口
│  │  ├─Tcp/                    # Tcp
│  │  │  ├─TcpClient/           # 客户端
│  │  │  └─TcpServer/           # 服务器端
│  │  ├─Udp/                    # Udp
│  │  │  └─UdpClient/           # 客户端
│  │  └─USBtoCANBUS/            # CAN 驱动接口
│  ├─lib/                       # .o 文件
│  │  └─debug & release         # 调试版本 & 发布版本
│  └─src/                       # 源文件
│     ├─AppFramework/           # 应用框架层(UI 界面)
│     │  ├─dllQLsLoginAppfwk    # 登录界面
│     │  └─dllQLsPluginsManagerAppfwk/      # 插件管理系统 应用框架层
│     ├─CoreSystem/             # 主系统(Qt 插件管理系统)
│     ├─DevBase/                # 驱动层(设备底层)
│     │  ├─dllQLsDBManager      # 数据库
│     │  │  ├─Dao/              # 数据访问对象(Data Access Object)层
│     │  │  ├─Pojo/             # 实体类映射(Plain Old Java Object)层
│     │  │  ├─Service/          # 服务层
│     │  │  ├─QLsDBConnPool     # 数据库连接池
│     │  │  └─QLsSpecification  # 数据库 sql 语句命令封装
│     │  ├─dllQLsLanguagesManager           # 语言管理系统
│     │  ├─dllQLsLog/           # 自定义日志库接口
│     │  ├─dllQLsPluginsManager/            # 插件管理系统 底层
│     │  ├─dllQLsThemesManager/             # 日志管理系统
│     │  └─dllQsLog/            # QsLog 第三方日志库
│     └─Plugins/                # 应用层(插件)
│        └─pluginCustomPlotTest # FFT 和 QLsCustomPlot 联合测试插件
├─doc/                          # 文档
├─exe/                          # 程序
└─third/                        # 第三方依赖
   ├─ffmpeg/                    # ffmpeg库
   ├─FFT/                       # fftw 第三方依赖库
   ├─MATLAB/                    # MATLAB 环境
   ├─MySQL/                     # 数据库
   ├─SDL2/                      # SDL2库
   └─插件模板/                  # 插件模板
         └─qlsplugin            # QtCreator自定义插件模板

Mozilla Public License Version 2.0 ================================== 1. Definitions -------------- 1.1. "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns Covered Software. 1.2. "Contributor Version" means the combination of the Contributions of others (if any) used by a Contributor and that particular Contributor's Contribution. 1.3. "Contribution" means Covered Software of a particular Contributor. 1.4. "Covered Software" means Source Code Form to which the initial Contributor has attached the notice in Exhibit A, the Executable Form of such Source Code Form, and Modifications of such Source Code Form, in each case including portions thereof. 1.5. "Incompatible With Secondary Licenses" means (a) that the initial Contributor has attached the notice described in Exhibit B to the Covered Software; or (b) that the Covered Software was made available under the terms of version 1.1 or earlier of the License, but not also under the terms of a Secondary License. 1.6. "Executable Form" means any form of the work other than Source Code Form. 1.7. "Larger Work" means a work that combines Covered Software with other material, in a separate file or files, that is not Covered Software. 1.8. "License" means this document. 1.9. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently, any and all of the rights conveyed by this License. 1.10. "Modifications" means any of the following: (a) any file in Source Code Form that results from an addition to, deletion from, or modification of the contents of Covered Software; or (b) any new file in Source Code Form that contains any Covered Software. 1.11. "Patent Claims" of a Contributor means any patent claim(s), including without limitation, method, process, and apparatus claims, in any patent Licensable by such Contributor that would be infringed, but for the grant of the License, by the making, using, selling, offering for sale, having made, import, or transfer of either its Contributions or its Contributor Version. 1.12. "Secondary License" means either the GNU General Public License, Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU Affero General Public License, Version 3.0, or any later versions of those licenses. 1.13. "Source Code Form" means the form of the work preferred for making modifications. 1.14. "You" (or "Your") means an individual or a legal entity exercising rights under this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants and Conditions -------------------------------- 2.1. Grants Each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by such Contributor to use, reproduce, make available, modify, display, perform, distribute, and otherwise exploit its Contributions, either on an unmodified basis, with Modifications, or as part of a Larger Work; and (b) under Patent Claims of such Contributor to make, use, sell, offer for sale, have made, import, and otherwise transfer either its Contributions or its Contributor Version. 2.2. Effective Date The licenses granted in Section 2.1 with respect to any Contribution become effective for each Contribution on the date the Contributor first distributes such Contribution. 2.3. Limitations on Grant Scope The licenses granted in this Section 2 are the only rights granted under this License. No additional rights or licenses will be implied from the distribution or licensing of Covered Software under this License. Notwithstanding Section 2.1(b) above, no patent license is granted by a Contributor: (a) for any code that a Contributor has removed from Covered Software; or (b) for infringements caused by: (i) Your and any other third party's modifications of Covered Software, or (ii) the combination of its Contributions with other software (except as part of its Contributor Version); or (c) under Patent Claims infringed by Covered Software in the absence of its Contributions. This License does not grant any rights in the trademarks, service marks, or logos of any Contributor (except as may be necessary to comply with the notice requirements in Section 3.4). 2.4. Subsequent Licenses No Contributor makes additional grants as a result of Your choice to distribute the Covered Software under a subsequent version of this License (see Section 10.2) or under the terms of a Secondary License (if permitted under the terms of Section 3.3). 2.5. Representation Each Contributor represents that the Contributor believes its Contributions are its original creation(s) or it has sufficient rights to grant the rights to its Contributions conveyed by this License. 2.6. Fair Use This License is not intended to limit any rights You have under applicable copyright doctrines of fair use, fair dealing, or other equivalents. 2.7. Conditions Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in Section 2.1. 3. Responsibilities ------------------- 3.1. Distribution of Source Form All distribution of Covered Software in Source Code Form, including any Modifications that You create or to which You contribute, must be under the terms of this License. You must inform recipients that the Source Code Form of the Covered Software is governed by the terms of this License, and how they can obtain a copy of this License. You may not attempt to alter or restrict the recipients' rights in the Source Code Form. 3.2. Distribution of Executable Form If You distribute Covered Software in Executable Form then: (a) such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and (b) You may distribute such Executable Form under the terms of this License, or sublicense it under different terms, provided that the license for the Executable Form does not attempt to limit or alter the recipients' rights in the Source Code Form under this License. 3.3. Distribution of a Larger Work You may create and distribute a Larger Work under terms of Your choice, provided that You also comply with the requirements of this License for the Covered Software. If the Larger Work is a combination of Covered Software with a work governed by one or more Secondary Licenses, and the Covered Software is not Incompatible With Secondary Licenses, this License permits You to additionally distribute such Covered Software under the terms of such Secondary License(s), so that the recipient of the Larger Work may, at their option, further distribute the Covered Software under the terms of either this License or such Secondary License(s). 3.4. Notices You may not remove or alter the substance of any license notices (including copyright notices, patent notices, disclaimers of warranty, or limitations of liability) contained within the Source Code Form of the Covered Software, except that You may alter any license notices to the extent required to remedy known factual inaccuracies. 3.5. Application of Additional Terms You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, You may do so only on Your own behalf, and not on behalf of any Contributor. You must make it absolutely clear that any such warranty, support, indemnity, or liability obligation is offered by You alone, and You hereby agree to indemnify every Contributor for any liability incurred by such Contributor as a result of warranty, support, indemnity or liability terms You offer. You may include additional disclaimers of warranty and limitations of liability specific to any jurisdiction. 4. Inability to Comply Due to Statute or Regulation --------------------------------------------------- If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Software due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be placed in a text file included with all distributions of the Covered Software under this License. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Termination -------------- 5.1. The rights granted under this License will terminate automatically if You fail to comply with any of its terms. However, if You become compliant, then the rights granted under this License from a particular Contributor are reinstated (a) provisionally, unless and until such Contributor explicitly and finally terminates Your grants, and (b) on an ongoing basis, if such Contributor fails to notify You of the non-compliance by some reasonable means prior to 60 days after You have come back into compliance. Moreover, Your grants from a particular Contributor are reinstated on an ongoing basis if such Contributor notifies You of the non-compliance by some reasonable means, this is the first time You have received notice of non-compliance with this License from such Contributor, and You become compliant prior to 30 days after Your receipt of the notice. 5.2. If You initiate litigation against any entity by asserting a patent infringement claim (excluding declaratory judgment actions, counter-claims, and cross-claims) alleging that a Contributor Version directly or indirectly infringes any patent, then the rights granted to You by any and all Contributors for the Covered Software under Section 2.1 of this License shall terminate. 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or Your distributors under this License prior to termination shall survive termination. ************************************************************************ * * * 6. Disclaimer of Warranty * * ------------------------- * * * * Covered Software is provided under this License on an "as is" * * basis, without warranty of any kind, either expressed, implied, or * * statutory, including, without limitation, warranties that the * * Covered Software is free of defects, merchantable, fit for a * * particular purpose or non-infringing. The entire risk as to the * * quality and performance of the Covered Software is with You. * * Should any Covered Software prove defective in any respect, You * * (not any Contributor) assume the cost of any necessary servicing, * * repair, or correction. This disclaimer of warranty constitutes an * * essential part of this License. No use of any Covered Software is * * authorized under this License except under this disclaimer. * * * ************************************************************************ ************************************************************************ * * * 7. Limitation of Liability * * -------------------------- * * * * Under no circumstances and under no legal theory, whether tort * * (including negligence), contract, or otherwise, shall any * * Contributor, or anyone who distributes Covered Software as * * permitted above, be liable to You for any direct, indirect, * * special, incidental, or consequential damages of any character * * including, without limitation, damages for lost profits, loss of * * goodwill, work stoppage, computer failure or malfunction, or any * * and all other commercial damages or losses, even if such party * * shall have been informed of the possibility of such damages. This * * limitation of liability shall not apply to liability for death or * * personal injury resulting from such party's negligence to the * * extent applicable law prohibits such limitation. Some * * jurisdictions do not allow the exclusion or limitation of * * incidental or consequential damages, so this exclusion and * * limitation may not apply to You. * * * ************************************************************************ 8. Litigation ------------- Any litigation relating to this License may be brought only in the courts of a jurisdiction where the defendant maintains its principal place of business and such litigation shall be governed by laws of that jurisdiction, without reference to its conflict-of-law provisions. Nothing in this Section shall prevent a party's ability to bring cross-claims or counter-claims. 9. Miscellaneous ---------------- This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not be used to construe this License against a Contributor. 10. Versions of the License --------------------------- 10.1. New Versions Mozilla Foundation is the license steward. Except as provided in Section 10.3, no one other than the license steward has the right to modify or publish new versions of this License. Each version will be given a distinguishing version number. 10.2. Effect of New Versions You may distribute the Covered Software under the terms of the version of the License under which You originally received the Covered Software, or under the terms of any subsequent version published by the license steward. 10.3. Modified Versions If you create software not governed by this License, and you want to create a new license for such software, you may create and use a modified version of this License if you rename the license and remove any references to the name of the license steward (except to note that such modified license differs from this License). 10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses If You choose to distribute Source Code Form that is Incompatible With Secondary Licenses under the terms of this version of the License, the notice described in Exhibit B of this License must be attached. Exhibit A - Source Code Form License Notice ------------------------------------------- This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. If it is not possible or desirable to put the notice in a particular file, then You may include the notice in a location (such as a LICENSE file in a relevant directory) where a recipient would be likely to look for such a notice. You may add additional accurate notices of copyright ownership. Exhibit B - "Incompatible With Secondary Licenses" Notice --------------------------------------------------------- This Source Code Form is "Incompatible With Secondary Licenses", as defined by the Mozilla Public License, v. 2.0.

简介

Qt插件管理系统。 主要为插件、主题、日志、语言、用户、设置等功能…… 并集成了校验、绘图、FFT、自定义控件、音视频播放、自定义功能模块、串口、TCP、UDP、CAN等…… 展开 收起
MPL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/ls56647426/qlpmsp.git
git@gitee.com:ls56647426/qlpmsp.git
ls56647426
qlpmsp
qlpmsp
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891