# QtApp **Repository Path**: slcode/QtApp ## Basic Information - **Project Name**: QtApp - **Description**: 这是一个基于qt的通用程序模板,聚合常用必要得模块:日志模块、崩溃模块、数据目录模块、配置文件模块、翻译等 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 5 - **Created**: 2020-01-08 - **Last Updated**: 2025-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QtApp #### 介绍 * 这是一个qt模板程序,聚合常用必要得模块,spdlog、crashpad、目录配置、配置文件、翻译 * 使用iss作为打包文件 * mac库引导 * 你可以选择使用qmake构建或使用cmake构建 ## 主程序 #### 日志模块 日志是spdlog的包装器 * 支持多线程 * 支持多个日志读写 * 主动刷新 基于spdlog的特点,包装器使用了创建毫秒值作为每次的spdlog域内的唯一id,来保证多个文件成功创建 首先需要注册日志名称,首个将在getInstance() 无参数下,返回第一个日志,其他日志将根据名称来返回对应的日志。 由于spdlog并不是实时刷新的,如果需要立即刷新则调用flush。 #### 崩溃报告模块 崩溃是使用crashpad,这是一个chrome使用的崩溃报告模块 * 进程外崩溃 * 指定上传目录 * 上传携带传递客户的基本信息 关于调试: #define APP_PUBLISH_GIT_ID "" * 关于git记录版本与调试说明说明 * 1. 未发布版本字符串始终为空 * 2. 当一切测试完毕,把最后一次的git log放进去,重新编译包,发布(注意,更改的git字符串,不可上传到git服务器上,也就是在git上APP_PUBLISH_GIT_ID永远为空,借助gitignore来) * 3. 发布版本,始终在主分支如1.0.x,不可在个人分支上发布如:abc_1.0.x * 4. 当用户端出现bug,生成了dump文件后,根据dump传递的额外值或log值,查阅git日志,直接切换到那个git log,把git log填进去,即可保证和当时发布的完全一致,便于调试 #### 目录 常用的目录:配置文件目录、日志目录、下载目录、dump目录 设计思路: 首先依赖系统的一个配置Key,windows是注册表,mac是对应的实现。 默认读取该位置是none,此时设置路径为一个默认路径,自此后,将从此key中读取将不再是none,而是程序根目录 然后根据跟目录去创建相对目录 返回则是根目录下返回相对目录 更改目录则修改“注册表”的根目录值 #### 配置文件 ###### 明文配置 默认一个`config/config.ini`文件 * 程序的一些基础字段 * 程序的用户配置信息 明文配置有两个基础字段isInit、Version * isInit:用来初始化一些默认字段值,如主动删除配置文件,那么将生成一些默认的配置文件 * Version:用来解决新版本,如果新版本号大于当前版本号,那么认为这里可以添加一些新增的字段,如果配置文件删除了,也会生成额外配置值 ###### 密文配置 密文配置是用户的一些隐秘信息,如用户名密码一类信息 #### 翻译 提倡所有使用tr或qsTr进行字符串的包裹,以便国际化翻译 #### 网络 提供了mosquitto的封装,用来数据统计或其它数据服务 ## 打包文件 #### Windows Windows打包使用iss,相关工具下载路径: #### Mac Mac涉及到普通库和framework,并且有签名相关