news 2026/6/10 17:28:19

QT快速开发框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT快速开发框架

QtMachineDog:告别重复造轮子,Qt 快速开发脚手架

"不管多小的 Qt 项目,总有一堆琐碎但必要的事情要做。"

作为一个 Qt 开发者,你是否经历过:

  • 每次新建项目都要重写一遍日志系统?
  • 程序崩溃后用户说"不知道发生了什么",而你根本拿不到堆栈?
  • 配置文件散落在各处,版本升级后配置丢失?
  • HTTP 请求封装写了无数次,每次都要重新解析 JSON?
  • 简单的数据 CRUD 操作,却要重写大量样板代码?

这些问题和具体业务无关,却每个项目都要面对。这就是我做QtMachineDog的原因——把通用的事一次做好,让开发者专注于业务逻辑

开源地址:https://gitee.com/Tlink/machine


简单介绍

QtMachineDog是一个基于CMake的 Qt 快速开发框架/脚手架。它不是试图替代 Qt,而是填补"项目初始化"到"业务开发"之间的空白——你不再需要为每个项目复制粘贴基础设施代码

核心定位:开箱即用的项目骨架,而非重量级业务框架


功能亮点(即拿即用)

功能模块解决的问题亮点特性
📜 日志系统告别 qDebug() 满天飞分级日志、文件轮转、多线程安全
💥 全局异常处理崩溃无迹可寻自动捕获崩溃信号,生成完整堆栈日志,再也不怕用户说"程序突然没了"
⚙️ 配置中心配置管理混乱全局统一的配置文件管理,支持版本兼容、自动备份
💾 持久化数据数据存储重复造轮子封装好的本地存储方案,业务层直接调用
🌐 HTTP 模块网络请求代码冗余基于现代 Qt 网络栈的请求封装,自动 JSON 解析、错误处理、超时重试
🗃️ 数据 CRUD 模板每次都要写增删改查可复制的业务模板,复制粘贴即可用于新模块,遵循统一设计模式
🏷️ 版本管理版本号混乱、自动更新困难语义化版本管理,内置更新检查接口
🖥️ Self-Host Web 服务需要内嵌 HTTP 服务内置轻量级 Web Server,可用于本地 API 或监控面板
🎨 FontAwesome 集成图标资源管理麻烦内置 FontAwesome,支持动态颜色/大小控制,无需准备多套图标资源
🔗 动态库管理DLL/SO 加载繁琐统一的动态链接库加载、热插拔支持
🔧 CMake 现代化跨平台构建头疼全 CMake 构建,支持 Windows/Linux/macOS,第三方依赖自动拉取

💡 谁需要这个项目?

个人开发者:快速启动 Side Project,不用每次都配基础设施
小团队:统一项目结构,新人上手成本降低 80%
企业项目:作为基础脚手架,确保所有项目有统一的日志、崩溃收集标准、快速开发示例
学习者:通过实战代码学习 Qt 工程化最佳实践(异常处理、CMake 模块化等)


项目结构遵循模块化设计,你可以:

  • 全量使用:作为完整脚手架启动新项目
  • 按需摘取:只拷贝你需要的模块(如只拿 Crash Handler 和 Logger)到现有项目

🔍 几个值得单独说的亮点

1. 崩溃处理:让"玄学 Bug"现形

/* by 01022.hk - online tools website : 01022.hk/zh/jsonzip.html */ void ExceptionHandler::setup() { try { spdlog::info("Setting up exception handlers..."); // 1. 设置 C++ 异常处理 originalTerminateHandler = std::get_terminate(); std::set_terminate(&ExceptionHandler::terminateHandler); // 2. 设置 Qt 消息处理 originalQtMessageHandler = qInstallMessageHandler(&ExceptionHandler::qtMessageHandler); // 3. 设置信号处理 - 关键:捕获段错误等 std::signal(SIGSEGV, ExceptionHandler::signalHandler); // 段错误 std::signal(SIGABRT, ExceptionHandler::signalHandler); // abort() std::signal(SIGFPE, ExceptionHandler::signalHandler); // 浮点异常 std::signal(SIGILL, ExceptionHandler::signalHandler); // 非法指令 // 注意:不要捕获 SIGTERM 和 SIGINT,让程序可以正常退出 // std::signal(SIGTERM, ExceptionHandler::signalHandler); // 终止信号 // std::signal(SIGINT, ExceptionHandler::signalHandler); // Ctrl+C spdlog::info("Exception handlers installed successfully"); } catch (const std::exception& e) { spdlog::error("Failed to install exception handlers: {}", e.what()); } }

2. fontawesome字体图标选择与使用

/* by 01022.hk - online tools website : 01022.hk/zh/jsonzip.html */ ui->btnErrorTest->setIcon(FontManager::ins().icon(0xf06a, {24,24}, QColor(200,0,0))); ui->btnIconChoose->setIcon(FontManager::ins().icon(0xf2b4, {24,24}, QColor(0,0,255))); ui->btnConfigLoad->setIcon(FontManager::ins().icon(0xf1de, {24,24}, QColor("#228B22"))); ui->btnMylib->setIcon(FontManager::ins().icon(0xf0e7, {24,24}, QColor(255,0,0)));

3. CRUD 模板:业务开发的复制粘贴神器

项目提供了一套基于 Qt Model/View 的通用数据操作模板,开发新模块时,复制模板文件夹,改改类名就能用,包含:

  • 数据模型定义
  • 数据库操作接口
  • 视图绑定逻辑
  • 基础的增删改查 UI

4. SelfHost Web服务-可内嵌 HTTP 服务 | 内置轻量级 Web Server,可用于本地 API 或监控面板

💬 写在最后

QtMachineDog 不是一个大而全的框架,而是一个务实的解决方案——解决那些每个 Qt 项目都会遇到、却没有人系统整理过的问题。

如果你也曾为"又要重写日志系统"而烦恼,不妨试试这个框架。把重复的事情交给 MachineDog,你专心做独一无二的功能。


🔧下一步集成asp.net core发布后的selfhost

使用SignalR,通过api来接受设备的实时状态,并轻量的web输出到网络
asp.net core相关的处理数据api demo
既保证了工业设备的稳重(桌面程序),又能使数据流动变得轻盈(web程序)

如果对你有帮助有启发,请帮忙转发点赞,star,您的支持是我的最大动力

开源地址:https://gitee.com/Tlink/machine

#Qt #Qt开发 #CMake #开源项目 #C++ #跨平台开发

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 2:15:37

智慧校园顶层设计实施计划:分阶段推进,稳步落地

✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2026/6/10 15:07:53

“ModelEngine”这一名称目前**并非一个广为人知、标准化或广泛商用的公开AI/ML基础设施产品名称**

“ModelEngine”这一名称目前并非一个广为人知、标准化或广泛商用的公开AI/ML基础设施产品名称,而更可能属于以下几类情形之一: ✅ 企业内部代号或中台组件名:如阿里“PAI-Studio”下的模型服务模块、腾讯“TI-ONE”中的推理调度子系统、华为…

作者头像 李华
网站建设 2026/6/10 0:56:51

百考通AI:论文降重与去AI痕迹的智能解决方案,让毕业无忧!

毕业季的学术战场,论文查重与AI检测已成为学子们必须跨越的“双重关卡”。重复率超标、AI生成痕迹明显,不仅让辛苦撰写的论文面临返工风险,更可能影响毕业进程。面对这一困境,百考通AI(https://www.baikaotongai.com&a…

作者头像 李华
网站建设 2026/6/10 15:09:23

道德约束测试:伦理规则引擎在自动驾驶决策链的验证框架

伦理测试的紧迫性与专业价值 随着自动驾驶技术向L3级以上演进,系统需承担动态驾驶主体责任,伦理决策成为安全核心。软件测试从业者面临全新挑战:如何验证算法在道德困境(如“电车难题”)中的决策合理性?伦…

作者头像 李华