# HumanBodyComposition **Repository Path**: qt-application-development/human-body-composition ## Basic Information - **Project Name**: HumanBodyComposition - **Description**: 基于 C++、Qt 与 QML 的心电管理系统设计与实现 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-08-28 - **Last Updated**: 2026-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 心电图检测系统 ## 项目简介 本项目是一款基于 Qt 6 框架开发的桌面心电图(ECG)检测系统,支持实时心电数据采集、历史数据回放、PDF 报告生成、患者信息管理等功能。系统采用 C++ 作为后端逻辑处理语言,QML 实现现代化的用户界面,通过 SQLite 数据库进行数据持久化存储。 ## 软件架构 项目采用分层架构设计,各层职责清晰、模块间低耦合: - **UI 层** (`ui/`): 负责界面显示和用户交互,全部使用 QML 实现 - **控制器层** (`ui/controllers/`): 连接 UI 与业务逻辑的桥梁,处理页面间的数据传递 - **服务层** (`services/`): 封装核心业务逻辑,如心电数据处理、报告生成、文件导出等 - **数据库层** (`database/`): 负责数据持久化,包括数据库连接管理、DAO 访问层和实体定义 - **设备层** (`devices/`): 处理与串口设备的通信,解析心电设备数据协议 - **工具层** (`utils/`): 提供通用的工具类,如日志、文件操作、字符串处理等 - **配置层** (`config/`): 管理应用程序的运行配置和功能开关 ### 目录结构 ``` HumanBodyComposition/ ├── app/ # 应用入口和全局初始化 ├── ui/ # 界面层(QML) │ ├── controllers/ # 页面控制器 │ ├── pages/ # 页面组件 │ ├── dialogs/ # 对话框组件 │ ├── widgets/ # 可复用控件 │ └── windows/ # 主窗口管理 ├── services/ # 业务服务层 │ └── ecg/ # 心电数据相关服务 ├── database/ # 数据库访问层 │ ├── dao/ # 数据访问对象 │ └── entity/ # 数据库实体 ├── devices/ # 设备通信层 ├── utils/ # 通用工具类 ├── config/ # 配置管理 ├── resources/ # 资源文件(图标、样式、翻译) └── docs/ # 项目文档 ``` ## 环境要求 ### 开发和运行环境 - **操作系统**: Windows 10/11 x64 - **Qt 版本**: 6.5 及以上(当前开发环境使用 6.9.1,msvc2022_64) - **C++ 标准**: C++17 - **构建系统**: CMake 3.21 及以上 - **编译器**: Visual Studio 2022 x64 ### 主要依赖模块 - Qt6::Core、Qt6::Gui、Qt6::Qml、Qt6::Quick - Qt6::QuickControls2、Qt6::QuickDialogs2 - Qt6::Widgets、Qt6::Sql、Qt6::SerialPort - Qt6::Concurrent、Qt6::Pdf、Qt6::PrintSupport ## 功能特性 ### 实时心电测量 - 支持 12 导联心电信号实时采集和显示 - 可调节走纸速度(纸速)和增益(灵敏度) - 支持冻结/解冻画面、基线重置操作 - 实时显示心率、导联连接状态 - 支持干扰滤波器设置(50Hz 抑制、肌电滤波、高通/低通滤波) ### 历史数据管理 - 测量数据自动保存为本地文件 - 支持历史记录回放播放 - 单导联和多导联两种回放模式 - 可调节回放速度 ### 报告生成与打印 - 自动生成标准格式的心电图 PDF 报告 - 支持诊断结论编辑和保存 - 可选择不同的报告模板(21 秒横版、单导联、HRV、室晚电位等) - 医生手写签名功能 - 支持直接打印或导出 PDF 文件 ### 患者信息管理 - 患者信息录入、编辑、查询 - 按姓名、日期范围搜索患者 - 测量记录关联查询 - 支持患者数据导出为 Excel 格式 ### 用户管理 - 多角色用户系统(管理员、操作员等) - 用户登录认证 - 医生签名管理 - 密码修改功能 ### 系统配置 - 串口设备自动识别和连接 - 数据自动备份设置 - 报告功能模块开关 - 组织机构信息配置 - 日志文件管理 ## 快速开始 ### 使用 Qt Creator 1. 启动 Qt Creator 2. 打开项目目录下的 `CMakeLists.txt` 文件 3. 选择 Qt 6.9.1 msvc2022_64 编译套件 4. 点击构建按钮编译项目 ### 使用命令行 ```bash # 生成 Visual Studio 项目 cmake -S . -B build/cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_PREFIX_PATH="C:/Qt/6.9.1/msvc2022_64" # 编译项目(单线程) cmake --build build/cmake --config Debug -- /m:1 ``` ## 数据库说明 系统默认使用 SQLite 数据库,文件名为 `human_body_composition.db`。 初始化建表 SQL 脚本位于 `database/init/migrations/` 目录下,数据库连接管理由 `database/db/DatabaseManager` 和 `database/init/SqliteHelper` 协同完成。 > **注意**: 如需使用预置数据进行测试,可将 `docs/human_body_composition.db` 文件替换程序生成的默认数据库文件。 ## 串口模拟数据 `docs/12lead_ecg_origin_data.txt` 文件包含设备原始心电数据样本,可用于在没有真实测量设备时进行功能测试。开发者可自定义模拟串口线程来发送该数据,触发系统的心电波形显示功能。 ## 主要技术栈 | 分类 | 技术选型 | |------|----------| | UI 框架 | Qt Quick / QML | | 后端逻辑 | C++ / QObject / 信号槽机制 | | 数据库 | SQLite + Qt SQL + 自研 DAO 封装 | | 设备通信 | Qt SerialPort | | 报告导出 | Qt Pdf / QPdfWriter / QPainter | | Excel 导出 | 基于 Qt 内部 Zip 写入生成 .xlsx | ## Contributing 1. Fork 本仓库 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 开源协议 本项目遵循开源协议,具体许可信息请查看项目根目录下的 LICENSE 文件。