当前位置: 首页 > news >正文

QT快速开发框架

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

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

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

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

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

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


简单介绍

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"现形

异常捕获

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+Cspdlog::info("Exception handlers installed successfully");} catch (const std::exception& e) {spdlog::error("Failed to install exception handlers: {}", e.what());}
}

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

图标选择

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)));

ScreenShot_2026-02-06_093231_592

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

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

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

数据增删查改

数据增删查改2

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

selfhost_web

💬 写在最后

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++ #跨平台开发

http://www.jsqmd.com/news/349016/

相关文章:

  • 百考通AI:智能实践报告生成,让实习成果展示更专业高效!
  • 『n8n』让AI长记性
  • Java API接口从0到1实战:新手也能看懂的编写指南 - 教程
  • 查找操作系统文件与数据库中的对应关系
  • 河北高考志愿填报服务推荐,正则教育口碑好不好 - 工业品网
  • 红外热成像图像鸟家禽检测数据集VOC+YOLO格式995张1类别
  • HoRain云--通过Xshell连接linux——安装Nginx
  • 在矩形画布上绘制水平居中矩形时,坐标计算公式和推导
  • 江苏隆发照明科技:精准定位户外亮化工程需求,实现多场景亮化设计定制 - 博客万
  • HoRain云--通过Xshell连接和访问linux
  • 高温钢主要分哪些品类?不同品类的核心区别和适配场景是什么? - 非研科技
  • 选购聚氨酯异形件,河南靠谱的厂家有哪些值得关注 - myqiye
  • HoRain云--通过Xshell连接linux——安装tomcat
  • 基于stm32的电机控制系统仿真设计 实现功能: 1、判断光照强度与设定值的大小 2、当此时光...
  • 基于深度学习的糖尿病视网膜病变诊断系统[python]-计算机毕业设计源码+LW文档
  • 化妆培训学校推荐哪家,吉田美学在各地区口碑怎样 - mypinpai
  • ‌对抗鲁棒性测试:3D点云攻击在自动驾驶感知系统的防御工具‌
  • 嵌入式C++教程——enum class
  • HoRain云--通过Xshell连接linux——安装Redis
  • 日照考研自习室价格多少,有哪些品牌值得推荐? - 工业设备
  • 加密摘要算法MD5、SHA、HMAC:学习笔记
  • 【Matlab】MATLAB if-elseif-else语句详解:多条件分支与复杂条件判断应用
  • 2026年最新SVG互动设计案例丨5个免费公众号排版工具推荐与实操指南 - peipei33
  • 技术速递|GitHub Copilot CLI 斜杠命令速查表
  • 期刊 On Hold 什么意思?
  • 跨平台学习新时代!随时随地培训考试的系统源码
  • HoRain--通过Xshell连接linux——安装jdk
  • 源码全开源无加密:自主可控的企业培训考试平台源码
  • Prolactin抗体在内分泌疾病诊断中有何关键作用?
  • 全国接地模块降阻剂优质厂家有哪些?优先选哪些维度筛选? - 非研科技