news 2026/10/17 8:26:23

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/10/14 7:31:40

AI协议模糊测试:2026年热度趋势与专业应用

随着AI技术的飞速发展,神经网络模糊测试在TCP/IP协议栈的应用已成为软件测试领域的热点话题。2026年,公众号内容热度集中于AI工具评测、行业合规需求及新兴场景(如低空飞行器和智能网联汽车),这反映了测试从业者对高效…

作者头像 李华
网站建设 2026/10/16 19:19:30

java+vue基于springboot的医疗器械医疗设备管理系统设计与实现_7dq58k9j

目录系统概述技术栈核心功能模块系统特色部署方式开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于SpringBoot和Vue的医疗器械管理系统是一个前后端分离的B/S架构应用,旨在实现医疗设备的全生命周期管理…

作者头像 李华
网站建设 2026/10/17 14:30:49

java+vue基于springboot的婚庆服务平台的功能设计_5qtr5245

目录功能模块设计订单与支付系统商家后台管理用户互动功能技术实现要点开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!功能模块设计 用户管理模块 注册与登录:支持手机号、邮箱注册,第三方登录&#x…

作者头像 李华
网站建设 2026/10/17 14:10:36

【Green Hills】GHS如何在工程配置中进行宏定义

1、 文档目标 解决Green Hills中想要通过全局的宏定义对于代码进行版本控制。 2、 问题场景 在工程中会存在因为不同的项目版本或者外设选型不同,对于同一个功能存在多个版本的实现。那么对于这个功能具体使能哪个版本一般会使用宏定义的方式去做使能与失能。那么…

作者头像 李华
网站建设 2026/10/16 8:41:26

工业缺陷检测:少样本学习在生产线视觉质检的泛化测试工具‌

软件测试的新战场 工业缺陷检测是智能制造的核心环节,但传统方法依赖大量标注样本,成本高且泛化能力弱。少样本学习技术的崛起,正为生产线视觉质检带来颠覆性变革。作为软件测试从业者,您可能熟悉缺陷预防和测试覆盖率的概念&…

作者头像 李华
网站建设 2026/10/7 7:13:31

‌大模型推理优化:MoE架构的吞吐量-时延平衡测试工具‌

软件测试行业的重要性‌ 在软件测试领域,公众号已成为从业者获取知识、分享经验的核心平台。热度高的内容往往反映行业痛点与创新方向。据行业报告(如2025年测试社区调查),超过70%的测试工程师通过公众号学习新技术,这…

作者头像 李华