基础框架
基础框架没有UI部分(除了框架提供的基本UI,如对话框,toast等),完成了系统所需的Socket通讯、HTTP通讯、加解密、数据代理、模块管理、插件管理、接口管理、缓存管理、消息管理、日志管理、主题管理等。
目录结构
一级目录分为bin和src,分别二进制文件和源代码目录,程序编译后根据编译器版本和环境生成不同的临时目录。
其中源代码目录下Modules目录用于存放每个相对独立的功能模块代码。一个模块用一个目录管理,如:PBModule等。
可执行文件目录
项目产生的可执行文件和运行所需配置、字典、资源等相关文件,一般文件夹以bin命名
| 目录 | 说明 |
|---|---|
| bin\Config | 存放框架配置文件和配置参数文件 |
| bin\Font | 自定义字体目录 |
| bin\Lang | 多语言文件夹,一种语言一个文件夹,如:chs、cht、en等 |
| bin\Modules | 模块文件夹,一个模块一个文件夹管理,由于某些系统采用DLL模块方式,文件夹下存放模块使用的字典、资源和配置文件等 |
| bin\Plugins | 插件目录,插件目录名称不受限制,启用或关闭插件修改该目录下的Plugins.ini文件 |
| bin\Resource | 框架资源文件夹,包括图标、图片、Actions图标等 |
| bin\Skins | 系统主题目录,一个主题一个目录,主题命名修改该目录下的Skin.ini文件,主题目录下存放主题使用的图标、图片和主题配置文件Skin.xml |
bin目录下,在程序运行后,会动态创建一些临时目录,如Backup(升级备份目录)、Update(升级目录)、Logs(系统日志目录)、Users(用户操作目录)等。另外在程序打包后,还会有许多QT相关的库文件和资源文件。
├─Config
├─Fonts
├─Lang
├─Modules
│ └─PBModule
│ ├─Charts
│ │ └─js
│ ├─Data
│ ├─Layout
│ ├─Resource
│ │ ├─Buttons
│ │ ├─img_Big
│ │ ├─img_Max
│ │ └─img_Small
│ └─Xmls
├─Plugins
│ ├─Debug
│ ├─creater
│ └─worker
├─Resource
│ ├─Actions
│ ├─img_Big
│ ├─img_Max
│ └─img_Small
└─Skins
├─Default
├─Gray
└─Perfect
├─Buttons
├─Icons
└─Images
公共目录
公共源代码目录,源代码中不含具体处理业务,只提供项目所需的底层代码、公共代码、公共接口及各种基类,如:公共接口定义、网络通信、加解密、字典、缓存处理、基础类、公共模块、公共插件等。该部分源代码会被具体项目引用(一般通过pri引用到工程中),不建议修改该部分代码(除非有必要),该部分代码不做具体业务,可以通过继承或重载的方式实现。
该目录下也会有一些独立的模块和插件,如日志插件、Debug插件、IE插件、升级插件、代理插件等,该部分插件会有一些资源文件、配置文件、字典文件等,所以公共目录下也会有一个可执行文件目录(如:debug,ie,proxy等),在该目录下会存放各个插件所需的文件,如有项目需要时,将对应的插件或模块目录复制到项目对应的目录下面即可。
公共目录一般位于项目的同级Common目录下面。
| 目录 | 说明 |
|---|---|
| core | 框架核心源码,存放cache、DB、Debug、Dicts、intf、utils、ui、message,qrc等相关源码,包含缓存管理、数据库操作、系统测试、数据字典、数 据表格、接口、日志管理、用户管理、路径管理、消息管理、资源管理等操作,谨慎修改。引用时通过该目录下的core.pri |
| device | 设备相关源码,如USB、加密狗等 |
| framework | 框架相关源码,如UI、Network、Intf、utils等,还包含环境检测、模块(插件)管理、消息管理等相关的代码,可通过framework.pri引用 |
| framework\network | 框架网络通信源码,包含Intf、Packet、Protocol、Proxy等目录,处理网络接口、协议、加解密、代理、Socket等相关源码,可通过network.pri引用 |
| modules | 业务功能模块源码,如:PBModule |
| plugins | 插件源码,如:Debug、creater、worker等插件 |
| quick | qml模式下使用的公共代码,如core、network、ui等相关代码,可通过quick.pri引用 |
| script | 公共处理脚本,如js、python的调用等 |
该表只列出了一级目录,每个目录下根据不同类型会也用相应的目录管理,如UI(一般又分widgets)、Units、intf等目录,其中目录下的qrc目录存放资源文件(如图片、字体、qss样式等)
├─core
│ ├─db
│ ├─dbg
│ ├ ─intf
│ │ ├─base
│ │ └─core
│ ├─message
│ ├─qrc
│ │ └─common.images
│ ├─ui
│ └─utils
├─framework
│ ├─intf
│ │ ├─base
│ │ └─net
│ ├─network
│ │ ├─Encrypt
│ │ ├─Net
│ │ │ ├─http
│ │ │ ├─Socket
│ │ │ │ └─Packet
│ │ │ └─udp
│ │ ├─Protocol
│ │ ├─Proxy
│ │ └─zlib
│ │ └─lib
│ ├─qrc
│ │ ├─font
│ │ ├─framework.images
│ │ ├─qm
│ │ └─qt
│ │ └─etc
│ ├─ui
│ └─utils
│ ├─check
│ ├─handler
│ ├─manager
│ └─web
├─plugins
├─quick
│ └─utils
│ ├─core
│ ├─network
│ └─ui
└─script
├─js
└─python
源代码目录
项目源代码目录(src),存放项目所需的UI、单元文件等,而项目的用到的公共单元、UI、网络通信、公共模块、插件、日志等,需要通过外部引用到项目中。
| 目录 | 说明 |
|---|---|
| src\Core | 一般会引用公共代码,如有个性化处理可在该目录下增加 |
| src\FrameWork | 框架相关源码,外部引用 |
| src\Modules | 业务功能模块源码,如:XXModule,业务模块下 |
| src\Network | 框架网络通信源码,外部引用 |
| src\Plugins | 插件源码,个性化插件,公共插件可通过外部引入 |
| src\ui | 项目用到的UI文件、小部件(widgets)等 |
| src\utils | 项目用到的单元文件 |
| src\qrc | 资源文件,如字体、图片、样式文件等 |
组件、公共单元
封装了许多组件、公共单元、函数、包等,工程中通过include将所需pri包引入到系统中,在pro通过INCLUDEPATH加入包路径引入工程,就可以使用了。
常用包framework.pri、base.pri、intf.pri、public.pri、network.pri、core.pri、qui.pri、log4qt.pri等,分别包含了日志管理、接口管理、网络通讯等相关单元及接口文件,具体使用可参考开发说明书
公共目录
公共源代码目录,源代码中不含具体处理业务,只提供项目所需的底层代码、公共代码、公共接口及各种基类,如:公共接口定义、网络通信、加解密、字典、缓存处理、基础类、公共模块、公共插件等。该部分源代码会被具体项目引用(一般通过pri引用到工程中),不建议修改该部分代码(除非有必要),该部分代码不做具体业务,可以通过继承或重载的方式实现。
该目录下也会有一些独立的模块和插件,如日志插件、Debug插件、IE插件、升级插件、代理插件等,该部分插件会有一些资源文件、配置文件、字典文件等,所以公共目录下也会有一个可执行文件目录(如:debug,ie,proxy等),在该目录下会存放各个插件所需的文件 ,如有项目需要时,将对应的插件或模块目录复制到项目对应的目录下面即可。
公共目录一般位于项目的同级Common目录下面。
| 目录 | 说明 |
|---|---|
| core | 框架核心源码,存放cache、DB、Debug、Dicts、intf、utils、ui、message,qrc等相关源码,包含缓存管理、数据库操作、系统测试、数据字典、数据表格、接口、日志管理、用户管理、路径管理、消息管理、资源管理等操作,谨慎修改。引用时通过该目录下的core.pri |
| device | 设备相关源码,如USB、加密狗等 |
| framework | 框架相关源码,如UI、Network、Intf、utils等,还包含环境检测、模块(插件)管理、消息管理等相关的代码,可通过framework.pri引用 |
| framework\network | 框架网络通信源码,包含Intf、Packet、Protocol、Proxy等目录,处理网络接口、协议、加解密、代理、Socket等相关源码,可通过network.pri引用 |
| plugins | 公共插件源码,如:debug、cache、logv等插件 |
| quick | qml模式下使用的公共代码,如core、network、ui等相关代码,可通过quick.pri引用 |
| script | 公共处理脚本,如js、python的调用等 |
| update | 系统升级监测类,引用后监测系统版本是否需要升级,通过update.pri引用 |
另外,在common的同级目录有一个controls目录,用于存放自定义组件和第三方组件、包等,如log4、protobuf、zlib、q-controls(自己封装的基础组件库)等。
常用组件
| 序号 | 图标 | 组件名称 | 说明 |
|---|---|---|---|
| 1 | PanelWidget | 容器组件 | |
| 2 | ProgressBar | 进度条组件 | |
| 3 | Battery | 电池电量使用显示组件 | |
| 4 | ColorProgressBar | 颜色进度条组件 | |
| 5 | RoundProgressBar | 圆形进度条组件 | |
| 6 | WaterProcess | 水波纹进度条组件 | |
| 7 | CircleWait | 圆形(小圆)动画等待组件 | |
| 8 | DonutWait | 圆形等待组件 | |
| 9 | LineWait | 圆形(线)动画等待组件 | |
| 10 | PieWait | 饼图旋转等待组件 | |
| 11 | TaiChiWait | 旋转太极图等待组件 | |
| 12 | ZoomCircleWait | 两个圆交替大小等待组件 | |
| 13 | QKeyboard | 标准(62键)虚拟键盘组件 | |
| 14 | QRandomKeyboard | 随机(52键)虚拟键盘组件 | |
| 15 | QNumberKeyboard | 数字(11键)虚拟键盘组件 | |
| 16 | CPUWidget | CPU使用率显示组件 | |
| 17 | MemoryWidget | 内存使用率显示组件 | |
| 18 | TBlinkingLabel | 闪烁文本标签组件 | |
| 19 | LunarCalendarWidget | 中文日历组件 | |
| 20 | VerificationCode | 图形验证码组件 | |
| 21 | THexView | 显示十六进制数据组件 | |
| 22 | IPAddress | IP地址显示组件 | |
| 23 | TLabel | 标签组件 | |
| 24 | TLabelButtonEdit | 带有标签和带有按钮的输入框组件 | |
| 25 | TLabelComboBox | 带有标签的下拉列表框组件 | |
| 26 | TLabelDoubleSpinBox | 带有标签的浮点数输入框组件 | |
| 27 | TLabelEdit | 带有标签的文本输入框组件 | |
| 28 | TLabelGrid | 可同时显示Caption和Value的组件 | |
| 29 | TLabelMaskEdit | 带有标签的Mask文本输入框组件 | |
| 30 | TLabelNumberEdit | 带有标签的数字输入框组件 | |
| 31 | TLabelSpinBox | 带有标签的整数输入框组件 | |
| 32 | TNumberEdit | 数字输入框,带单元(如:元)组件 | |
| 33 | TMoneyWidget | 显示大写金额组件 | |
| 34 | LightButton | 灯光圆形按钮组件 | |
| 35 | NavButton | 导航按钮组件 | |
| 36 | ImageSwitch | 图形开关按钮组件 | |
| 37 | SwitchButton | 开关按钮组件 | |
| 38 | PageWidget | 分页组件 | |
| 39 | TPasswordLevelWidget | 显示密码强度组件 | |
| 40 | SignalWidget | 网络信号显示组件 | |
| 41 | StarView | 星级评价组件 | |
| 42 | TabSet | 标签页组件 | |
| 43 | RotateCircle | 旋转圆组件 | |
| 44 | RollingLabel | 滚动提示标签组件 | |
| 45 | AnimationButton | 动画按钮组件 |