自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(561)
  • 收藏
  • 关注

原创 虚拟仿真、半实物仿真和实况仿真简介

仿真技术按虚实占比分为三类:虚拟仿真(全数字模型,低成本快速迭代,用于算法验证、模拟训练)、半实物仿真(部分真实硬件接入,实时闭环测试,用于控制器验证、高成本试验替代)和实况仿真(全实装操作,高保真高风险,用于实兵演练、定型测试)。三者保真度、成本和应用阶段递进互补,现代军事LVC框架可整合多形态实现虚实协同。核心差异在于硬件参与程度、实时性要求和适用场景。

2026-08-03 21:59:46 313

原创 C++打造自己的std::error_code

摘要: std::error_category是C++11中用于区分错误来源的抽象基类,通过错误码和类别唯一标识错误类型。自定义错误类别需继承该类,实现name()和message()方法,并确保全局单例。标准库提供system_category(系统错误)和generic_category(通用errno)两个内置类别。自定义错误需配套枚举和模板特化std::is_error_code_enum以支持隐式转换。关键注意点包括:单例模式(避免栈对象)、错误码唯一性,以及通过地址比较类别而非名称。典型应用包括

2026-08-01 22:46:20 267

原创 C++设计一个函数来求容器元素绝对值之和的平均值

本文探讨如何实现通用的容器元素绝对值平均值计算函数。原始版本仅支持std::vector<double>,存在类型硬编码问题。通过C++模板技术进行改进:1. 使用模板函数和SFINAE技术,支持标准容器、原生数组和初始化列表;2. 利用std::accumulate简化累加逻辑;3. 通过std::iterator_traits和std::begin/end实现容器类型抽象;4. 提供C++20 Concept简化版和C++11兼容版实现;5. 特别处理std::initializer_lis

2026-07-28 22:47:39 178 1

原创 写一个自定义 QStyle

本文深入解析了Qt中自定义QStyle的实现原理与应用场景。QSS样式表只能解决80%的基础UI美化需求,而QStyle作为底层方案可处理复杂绘制、性能优化和特殊控件改造。文章首先分析了QSS的局限性(绘制能力有限、粒度不足、性能瓶颈等),随后详细介绍了QWidget的绘制机制(双缓冲、脏区域等核心概念)及QStyle的架构设计(策略模式、控件与样式分离)。重点阐述了自定义QStyle的实现方法,包括继承QCommonStyle、重写关键绘制函数、统一尺寸体系等,并提供了完整的代码示例和枚举速查表。最后强调

2026-07-19 17:27:13 415 3

原创 qobject_cast转换失败原因分析

摘要:qobject_cast依赖Qt元对象系统,失效原因可归结为:1)编译问题:未执行qmake全量重编译或头文件未加入.pro;2)继承规范不符:QObject未作为第一基类、多重继承QObject子类或私有继承;3)元信息缺失:缺少Q_OBJECT宏或未包含完整头文件;4)命名空间问题:匿名空间或旧版Qt命名空间处理异常;5)跨库场景:类未导出或插件未注册。调试步骤:检查inherits()返回值,打印类名确认元信息匹配,优先执行全量重编译。相比dynamic_cast,qobject_cast不依赖

2026-07-16 22:41:10 421 1

原创 Qt QPainter 完全指南:从画线到绘制复杂图形

本文介绍了Qt中QPainter的核心原理与应用实践。QPainter作为Qt的2D绘图引擎,采用画家模型设计,通过状态机管理绘制属性,支持坐标变换、裁剪、混合模式等高级功能。文章详细解析了QPainter的绘制流程、坐标系统、基本图形绘制方法(线条、矩形、文本等),以及QPainterPath、Transform等高级特性。同时深入剖析了Qt绘图系统的三层架构(QPainter-QPaintDevice-QPaintEngine)和双缓冲机制。最后通过一个完整的仪表盘控件示例,展示了如何利用QPainte

2026-07-13 23:18:40 467 1

原创 写了这么多年Qt,你知道setStyleSheet 的原理吗?

本文深入分析了Qt样式表(QSS)的底层原理与实现机制。通过Qt 5.12.12源代码解析,揭示了QSS的工作流程:1. 样式解析阶段将CSS字符串转换为结构化规则;2. 通过QStyleSheetStyle代理原生样式;3. 在polish阶段注入属性;4. 最终在绘制阶段应用样式规则。文章详细对比了直接设置控件属性与使用QSS的区别,解释了为何后者能生效而前者可能无效。同时提供了QSS属性与QStyle接口的详细对照表,总结了常见样式不生效的原因及解决方案,并比较了QSS与QProxyStyle的异同。

2026-07-12 21:57:34 607

原创 C++之std::numeric_limits介绍

C++标准库中的numeric_limits类模板(定义于<limits>)提供统一查询数值类型边界、浮点特性及特殊值(如无穷/NaN)的接口。其主模板默认返回T{}(零值),实际功能通过针对基础类型(如int/double)的全特化实现。关键特性包括:静态函数max()/min()/lowest()获取极值,epsilon()等查询浮点精度,is_integer等编译期类型判断。采用(min)写法规避Windows宏冲突,支持constexpr和[[nodiscard]],泛型友好,替代C风格

2026-07-11 23:35:10 209

原创 编程中常见的正则表达式应用场景总结

本文介绍使用Qt的QRegularExpression正则表达式删除字符串中"固定前缀+数字"片段的方法。关键点包括:1.使用"img\d+"匹配前缀加数字;2.批量删除多个前缀可用"(img|test)\d+";3.通过\b限定独立单词;4.注意Qt中需双写反斜杠。推荐使用Qt5.15+的QRegularExpression替代老旧QRegExp,支持replace()全局替换或replaceFirst()局部替换。该方法可处理不同位数数字,避免

2026-07-11 22:55:37 393

原创 fatal error C1189: #error: WinSock.h has already been included 的解决方案

【摘要】Boost.Asio与Windows头文件因Winsock版本冲突导致编译错误。解决方案包括:1)添加预处理器宏_WINSOCKAPI_和WIN32_LEAN_AND_MEAN阻止旧版Winsock包含;2)确保asio头文件先于Windows.h包含;3)将项目中所有winsock.h替换为winsock2.h。三种方法均可解决新旧Winsock API头文件共存冲突问题。

2026-07-10 22:46:15 297

原创 Qt界面底层实现浅谈: 多渲染后端的分层架构

本文详细解析了Qt框架的图形渲染机制,主要分为三部分内容:1. QtWidgets的CPU软件光栅化机制:默认使用QRasterPaintEngine进行纯CPU绘制,通过分层架构实现跨平台一致性,最终将像素输出到系统原生窗口表面。2. QtQuick/QML的GPU加速渲染:在Qt5中深度绑定OpenGL,Qt6引入RHI抽象层支持多后端图形API(D3D11/12、Metal、Vulkan等),实现更好的跨平台兼容性。3. 性能对比与选型建议:分析了CPU软件光栅化与GPU渲染在不同场景下的性能差异,并

2026-07-05 19:28:08 701 2

原创 VCGLib:一个好用的网格模型处理库

VCGLib是一个由意大利国家研究院CNR-ISTI开发的纯头文件C++三维网格处理库,专注于三角/四面体网格的操控与处理。作为MeshLab和Metro的底层引擎,它提供网格简化、清洗、曲率计算等先进功能,支持无编译集成和高度可定制的拓扑结构。核心设计采用可插拔组件组合,实现零冗余内存管理。库包含丰富的算法模块,如文件IO、拓扑遍历、网格修复、采样算法和空间索引等。使用需掌握模板元编程,适合三维扫描后处理、逆向建模等场景。优点包括工业级算法和跨平台性,缺点是文档较少且学习曲线较陡。建议从基础IO和简化功能

2026-07-05 14:03:47 387

原创 linux下因两个同名C++结构体引起的崩溃问题分析

本文分析了Linux环境下两个动态库中同名结构体导致运行时崩溃的问题。原因在于Linux动态链接的全局符号抢占机制,不同库的同名结构体在运行时被合并为同一符号,当内存布局或成员不一致时引发崩溃。与Windows默认隐藏内部符号不同,Linux默认导出所有全局符号。解决方案包括:1)使用命名空间隔离;2)编译时设置符号可见性(-fvisibility=hidden);3)控制链接加载方式。根本差异在于Windows采用定向绑定的隐藏模式,而Linux采用全局符号池的开放模式,后者更易引发运行时冲突。

2026-07-03 23:19:23 574

原创 Qt布局中QCheckbox和QLineEdit水平布局中间没有空白,QCheckbox和QCombobox水平布局中间有很大的空白

本文分析了Qt控件布局中产生空白间隙的根本原因及解决方案。核心问题在于控件的三个尺寸特性:SizeHint(理想大小)、MinimumSize(最小限制)和SizePolicy(空间分配策略)。通过对比QCheckBox+QLineEdit(紧密贴合)和QCheckBox+QComboBox(产生间隙)两种组合,指出ComboBox因Preferred策略和较大MinimumSize导致无法压缩,从而产生空白。解决方案是将ComboBox的SizePolicy改为Expanding,使其主动占据剩余空间。

2026-07-01 23:21:38 518 1

原创 1267 - Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) ...

MySQL查询中出现1267错误,原因是FIND_IN_SET操作涉及的字段/字符串字符集不一致(utf8mb4_0900_ai_ci与latin1_swedish_ci冲突)。解决方案有三种:1)临时方案:在SQL中使用CONVERT函数强制统一字符集;2)永久方案:通过ALTER TABLE修改字段字符集为utf8mb4;3)配置方案:在数据库连接时指定utf8mb4字符集。核心原则是确保参与字符串比较的字段字符集和排序规则完全一致。

2026-07-01 22:05:58 156

原创 ImGui: 一套C++ 即时模式 GUI(Immediate Mode GUI,IMGUI) 开源库

DearImGui是一款轻量级C++即时模式GUI库,专为游戏开发、工具调试和编辑器界面设计。它采用无回调机制,通过每帧重建UI实现高效开发,支持OpenGL/DirectX/Vulkan等多种图形后端。核心特性包括:内置丰富控件、跨平台支持、中文显示(需加载字体)、窗口停靠和表格布局。典型应用场景包括游戏引擎调试面板、性能监控工具和图形编辑器,但不适合商业桌面软件。集成过程需配置平台和渲染后端,开发时需注意性能优化和线程安全限制。该库以开发效率见长,但缺乏原生控件支持,适合工具类界面而非通用应用程序。

2026-06-26 23:12:20 1176 2

原创 CMake项目,用VS2022编译调试,传递命令行参数的方法

在VS2022中为CMake项目配置命令行参数有两种方法:1)通过VS界面操作,在顶部工具栏选择调试目标后进入「调试和启动设置」,自动生成launch.vs.json文件并在args字段添加参数(每个参数需作为独立数组元素);2)直接编辑.vs/launch.vs.json文件,在对应配置块中添加args数组。若通过CMake生成.sln解决方案,则可通过项目属性直接设置命令参数。注意多配置环境下需为每个配置单独添加参数,且参数需按空格分隔为独立元素。

2026-06-26 22:00:47 296

原创 移动构造不标 noexcept,std::vector 扩容就会悄悄退化成拷贝

文章摘要: C++中noexcept关键字对STL容器性能影响显著。实验显示,std::vector扩容时,若元素移动构造未标记noexcept,会退化为拷贝构造(耗时激增130倍),因标准库通过std::move_if_noexcept保障异常安全。析构函数是唯一默认隐式noexcept的特殊成员,而用户手写的移动构造/赋值默认不带noexcept,需显式声明以优化性能。最佳实践:对不会抛异常的移动操作标记noexcept;遵循“零法则”减少手写析构,避免析构抛异常。std::move_if_noexce

2026-06-23 23:29:11 528

原创 mysql导入备份文件报错:ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT...

MySQL导入SQL备份文件时报错"Row size too large",主要因InnoDB引擎单行数据超过8126字节限制。问题根源在于表使用COMPACT行格式且含大量大字符字段,导致行内存储空间不足。推荐解决方案是将表行格式改为DYNAMIC,该格式会将超长数据溢出存储,行内仅保留指针。具体操作包括:设置全局参数、修改表行格式为DYNAMIC,或在建表时直接指定该格式。对于批量处理,可统一替换建表语句中的引擎设置后重新导入。

2026-06-16 22:56:16 373 2

原创 libigl: 一个很好用且开源的C++几何处理库

摘要: libigl是一款轻量级C++开源几何处理库,采用MIT协议,专注于三角/四面体网格的离散微分几何、有限元计算及可视化。其核心设计为Header-only模式,基于Eigen矩阵描述网格数据,算法模块化且无强耦合,支持快速原型开发。内置OpenGL查看器简化调试,适用于科研(参数化、测地线算法)、建模预处理(网格简化、UV展开)、有限元仿真等场景。依赖分层明确(强制Eigen3,可选CGAL/Embree等),提供网格IO、布尔运算、光线追踪等扩展功能。优势包括低入门成本、丰富算法覆盖及跨平台支持,

2026-06-16 22:26:19 518 1

原创 全面深入了解C++20 范围库(std::ranges)

C++20范围库(std::ranges)是对传统STL的重大升级,基于五大核心能力:概念(Concept)、范围(Range)、视图(View)、管道语法和投影(Projection)。它解决了传统STL的繁琐写法、组合困难等问题,支持线性链式调用和惰性求值。主要内容包括:1) 范围的概念定义,所有标准容器天然是范围;2) 哨兵(Sentinel)机制,支持更灵活的序列终止判断;3) 视图(View)的非拥有性、惰性计算特性;4) 管道语法实现声明式编程风格;5) 投影(Projection)简化结构体操

2026-06-14 19:18:14 548 1

原创 ANTLR4: CORBA IDL、C++ 语法文件分析利器

摘要: ANTLR4是一款强大的语法解析器生成工具,通过.g4语法文件自动生成词法分析器(Lexer)、语法分析器(Parser)、解析树(AST)及遍历接口(Listener/Visitor),显著降低自定义或现有语言解析的开发成本。其核心优势包括跨语言支持(Java/Python/C++等)、易读的类EBNF语法、完善的错误处理,以及官方grammars-v4仓库提供的数百种预置语法(如C++、SQL、Protobuf)。典型应用涵盖源码解析、DSL设计、接口语言处理等。 工作流程: 词法分析:源码→T

2026-06-12 23:28:54 532 1

原创 VS2019自定义调试可视化:Natvis 可视化框架

摘要:Natvis是Visual Studio专为C/C++调试设计的可视化框架,通过XML文件定义规则,优化复杂数据结构(如结构体、模板、链表等)在调试时的显示效果。支持实时生效、无代码侵入,可配置条件显示、数组/树可视化等高级功能。使用方法包括创建项目内/全局.natvis文件,核心XML节点有<Type>、<DisplayString>、<Expand>等,并提供数组/链表/树的专用可视化方案。适用于自定义类型、第三方库数据结构等场景,显著提升调试效率。

2026-06-07 14:34:26 619 1

原创 MySql中各种功能用sql语句实现总结

本文总结了SQL常用操作,主要包含:1) 数据查询中的排序(ORDER BY)和分页(LIMIT)语法;2) 聚合统计(COUNT/SUM/AVG等)与分组(GROUP BY)操作,包括HAVING筛选;3) 数据增删改(DML)操作,如INSERT、UPDATE、DELETE及批量插入等高效写法;4) 判断表字段是否存在的方法;5) 通过存储过程实现批量添加/删除所有表的指定字段。文章提供了大量实用SQL示例,涵盖单表操作的基本技巧和优化建议,适合日常数据库开发参考。

2026-06-07 10:53:02 274

原创 std::vector<T>到QVector<T>的数据复制方案

本文介绍了5种高效实现std::vector到QVector转换的方法:1. Qt官方接口(Qt5.15+/Qt6):QVector::fromStdVector()直接深拷贝,逆向使用toStdVector();2. 移动语义(最优性能):通过std::make_move_iterator转移资源,避免元素拷贝;3. POD类型极致优化:利用memcpy整块内存复制,仅适用于基础数据类型;4. 通用深拷贝方案:预分配内存后通过迭代器追加,适合所有类型;5. C++17模板统一方案:自动区分左右值引用

2026-06-05 22:53:21 545

原创 Qt之QScopedPointer、QScopeGuard、QScopedValueRollback使用及源码解读

本文系统解析了Qt框架中的三种RAII(资源获取即初始化)工具:QScopedPointer、QScopeGuard和QScopedValueRollback。QScopedPointer是独占式智能指针,通过作用域自动释放内存,支持自定义删除器适配不同场景;QScopeGuard作为通用作用域守卫,确保任何退出路径下都能执行预定义的清理逻辑;QScopedValueRollback专用于变量值的临时修改与自动恢复。三者均基于析构函数自动执行机制,分别针对内存管理、通用资源清理和变量状态回滚等典型场景,通过

2026-06-04 23:14:52 789

原创 CMake实践:VS2019控制台程序隐藏控制台方法

本文介绍了在Windows平台隐藏控制台窗口的两种方案:1.运行时动态隐藏:通过WindowsAPI(ShowWindow或FreeConsole)实现,但会短暂闪现黑框;2.编译时彻底移除:通过修改链接器配置(MSVC用#pragma指令/MinGW加-mwindows参数/CMake设置WIN32_EXECUTABLE属性),从根源不生成控制台。特别推荐CMake方案,可条件化配置(Debug保留/Release隐藏),保持main()入口且跨平台兼容。两种方法各有利弊,前者灵活但存在闪现,后者彻底但需

2026-06-04 21:49:31 365

原创 cereal 库:C++ 序列化的轻量之选

Cereal是一个专为C++11及以上版本设计的轻量级头文件序列化库,支持二进制、XML和JSON格式。它无需外部依赖,直接包含头文件即可使用,具有高性能(二进制序列化接近memcpy速度)、类型安全和多态支持等特性。支持侵入式和非侵入式两种接入方式,提供版本控制和Split Save/Load功能,能优雅处理schema变更。内置对STL容器和智能指针的支持,性能测试显示其二进制格式比Boost.Serialization快4-5倍。相比Protocol Buffers,Cereal无需预编译且侵入性更低

2026-06-01 23:16:49 1042 2

原创 C++17之类模板实参自动推导CTAD

文章摘要 本文详细介绍了C++中的聚合初始化和类模板实参自动推导(CTAD)。聚合初始化适用于无构造函数、全public成员的聚合类,通过花括号{}直接初始化成员变量,支持嵌套和缺省值。CTAD是C++17特性,允许编译器根据构造函数参数自动推导模板参数,简化模板类对象创建。标准库容器、智能指针等内置CTAD支持,但需注意禁止部分显式推导、模板别名不支持及静态成员需显式指定类型。自定义推导指引可解决复杂场景下的类型推导问题。

2026-06-01 21:55:35 275

原创 C++ 序列化 Protocol Buffers:高效数据交换

摘要:本文介绍了Google开发的Protocol Buffers(Protobuf)协议,它是一种高效、跨语言的结构化数据序列化方案。文章详细讲解了Protobuf的安装方法(系统安装与源码编译),并通过C++示例展示了完整使用流程:定义.proto文件、生成代码、序列化/反序列化操作。重点解析了字段类型、嵌套消息、重复字段等核心语法,比较了Protobuf与JSON/XML的性能优势,最后给出了兼容性维护、性能优化等实用建议。Protobuf以其高效的二进制编码、强类型检查和跨语言特性,成为微服务和网络

2026-05-28 23:11:01 404 4

原创 推荐一个学习Windows编程的好地方:CppGuide社区

《Windows 10系统编程指南》是一本全面介绍Windows系统编程的在线教程,涵盖17个核心章节。从基础概念(第1章)开始,逐步深入讲解Windows对象与句柄(第2章)、进程管理(第3-4章)、线程基础与高级应用(第5-10章),包括线程调度、同步机制和线程池等关键主题。随后重点解析I/O操作(第11章)、内存管理(第12-14章)以及动态链接库(第15章)的实现,最后涉及系统安全(第16章)和注册表操作(第17章)。该教程结构清晰,适合开发者系统学习Windows平台底层编程技术。

2026-05-28 22:43:17 214

原创 std::visit深入理解及源码分析

本文深入解析C++17中的std::visit机制,它是访问std::variant的标准方式。std::visit基于访问者模式实现,能自动匹配variant当前存储的类型并调用对应处理逻辑,避免手动类型判断。文章详细介绍了其语法格式、基础用法(单/多variant访问)、高级技巧(重载lambda、函数对象访问、带返回值访问)以及C++20显式指定返回类型等特性。通过分析底层实现原理,揭示了std::visit如何通过编译期生成类型分发逻辑和运行期索引跳转实现高效访问。最后对比了与其他访问方式的优劣,指

2026-05-26 23:36:43 649 1

原创 FastCopy:Windows 最快的文件复制备份工具

FastCopy 是由日本开发者白頭秀明 (Shirouzu Hiroaki) 开发的Windows 平台极致性能文件复制 / 备份软件,以突破系统限制的传输速度和强大的文件处理能力著称,广泛用于大文件、海量小文件及超长路径文件的高效传输。特性说明极速传输采用异步 I/O + 直接 I/O(绕过系统缓存),读写线程独立并行,SSD 环境下速度提升20%-30%,NVMe SSD 实测可达8.7GB/s+,远超 Windows 原生复制 (2-3GB/s)FastCopy超长路径支持完美处理。

2026-05-24 12:19:43 511

原创 QHttp: 一个开源的轻量级、异步、高性能 HTTP 库

QHttp是一个轻量级、异步的第三方HTTP库,专为Qt5/C++14设计,同时支持服务器端和客户端功能。核心优势包括异步非阻塞处理、高效HTTP解析、自动内存管理和PIMPL设计。安装需Qt5.7+和C++14编译器,通过qmake或CMake集成。示例展示了如何构建REST API服务器和发送HTTP请求。性能优化建议包括连接复用和请求限制。适用于嵌入式等资源受限环境,但不推荐用于Qt6项目或需要WebSocket等复杂功能的场景。

2026-05-19 22:18:20 633

原创 QtFluentWidgets: 一套基于C++ Qt Widgets的Fluent Design风格控件库

QtFluentWidgets是一款基于C++ QtWidgets的Fluent Design风格控件库,提供150+现代化UI组件,支持Qt5/Qt6无缝兼容。主要特性包括:统一主题管理、Windows 11风格控件(如日期范围选择器、自定义标题栏等)、流畅动画效果,并内置QtDesigner插件支持可视化开发。该库采用CMake构建,支持源码集成或add_subdirectory方式引入,提供完整的Demo程序和文档。开发者可快速构建符合Fluent Design规范的桌面应用,无需编写复杂样式表,同时

2026-05-17 21:11:54 1050

原创 TypePerf:Windows 命令行性能计数器工具(CPU利用率、内存利用率、GPU利用率等)

TypePerf是Windows内置的命令行性能监控工具,可实时采集CPU、内存、磁盘等系统资源指标数据。它支持本地/远程监控、多种日志格式输出(CSV/TSV/BLG),并能查询系统所有性能计数器。工具语法简洁,通过参数可设置采样间隔、次数及输出目标,适用于服务器监控和性能分析。文章详细介绍了基础监控、日志记录、计数器查询等典型用法,并提供了GPU监控、C++/Qt实现方案等高级应用示例,最后总结了常用性能计数器速查表。该工具具有轻量高效的特点,是系统管理员和开发人员进行自动化监控与问题排查的实用选择。

2026-05-15 22:16:54 705 1

原创 SVN 把当前的代码回退到之前的某个版本

SVN代码回退操作指南:提供两种场景的解决方案。场景1仅本地回退(推荐):通过svn update -r版本号或TortoiseSVN的"Update to Revision"功能,可临时恢复本地文件到指定版本,不影响服务器代码。场景2服务器同步回退:需先更新到最新版本,再通过反向合并(svn merge -rHEAD:目标版本号)或TortoiseSVN的日志回退功能,最后提交变更。两种方法均保留历史记录,通过创建新版本实现回退。TortoiseSVN提供图形化操作界面,支持通过日志快

2026-05-14 23:01:31 1598

原创 QFluentKit: 一个基于 Qt Widgets 的 Fluent Design 风格 UI 组件库

QFluentKit是基于QtWidgets的开源FluentDesign风格UI组件库,专为Qt C++开发者设计。该库提供现代化、美观的界面解决方案,支持Qt5.15+和Qt6跨版本兼容,集成QWindowKit实现无边框窗口管理。主要特性包括:严格遵循微软FluentDesign规范、60FPS流畅动画、统一主题管理、丰富的控件库(按钮、输入框等)以及高度可定制性。安装方式支持MinGW/MSVC编译器和Linux/macOS平台,提供CMake集成方案。通过简洁的API,开发者无需复杂样式表即可快速

2026-05-14 22:39:00 1237

原创 Qt程序设计涉及到的开发软件

Qt安装目录包含多个平台的开发工具链,主要分为三大类:1)MSVC2019_64工具集,含qmake/moc/uic等构建工具、Designer界面设计器、Linguist翻译工具及windeployqt部署工具;2)MinGW工具链,提供GCC兼容开发环境;3)WebAssembly专用工具链,支持浏览器端应用开发。各平台工具功能对应但适配不同目标环境,如wasmdeployqt替代桌面端的部署工具。工具按功能分为构建编译、UI设计、本地化支持、调试诊断等类别,通过标准

2026-05-06 21:40:50 522 2

原创 浅谈LLVM

LLVM是一套模块化、可重用的编译器基础设施,已成为现代C++开发的核心工具链。其采用三阶段架构(前端生成LLVMIR、优化器优化IR、后端生成机器码),通过Clang提供比GCC更快的编译速度和更优的错误提示。LLVM工具链包括Clangd(代码补全)、Clang-Tidy(静态分析)、Clang-Format(代码格式化)和LLDB(调试器),显著提升Qt开发效率。文章详细介绍了LLVM的安装配置、CMake集成方法,并提供了完整的Qt项目示例,展示如何利用LLVM优化构建流程和代码质量。建议开发者从C

2026-05-04 22:00:23 620

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题demo

C++继承多接口,调用虚函数跳转到错误接口的虚函数的奇怪问题,一个示例的dmeo

2024-04-11

浮点数与十六进制转换工具

 在 C/C++中,使用浮点方式存储实数,用两种数据类型来保存浮点数: foat(单精度)和double(双精度)。float在内存中占4字节,double在内存中占8字节。由于占用空间大,double可描述的精度更高。这两种数据类型在内存中同样以十六进制方式存铺,但写大类型有所不同。         整型类型是将十进制转换成二进制保存在内存中,以十六进制方式显示。浮点类型并不是将一个浮点小数直接转换成二进制数保存,而是将浮点小数转换成的二进制码重新编码,再进行存储。C/C++的浮点数是有符号的。         在C/C++中,将浮点数强制转换为整数时,不会采用数学上四舍五人的方式,而是食弃掉小数部分,不会进位。         浮点数的操作不会用到通用寄存器,而是会使用浮点协处理器的浮点寄存器,专门对浮点数进行运算处理。

2024-01-22

C++设计模式例程,工厂模式例子

C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。工厂模式属于创建型模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离。 作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式,而简单对象,特别是只需要通过 new 就可以完成创建的对象,无需使用工厂模式。如果使用工厂模式,就需要引入一个工厂类,会增加系统的复杂度。

2024-01-15

高质量 C++编程指南,编程的好书籍

前言......................................................................................................................................6 第 1 章 文件结构....................................................................................................................8 1.1 版权和版本的声明........................................................................................................8 1.2 头文件的结构 ....................................................................................................

2023-12-26

C++模板函数重载规则详解

模板函数重载匹配规则,他规定着,当我们调用一个具有多个重载的模板函数时,该选择哪个函数作为我们的调用对象。与普通函数的重载类似,但是模板属性会增加一些新的规则。 模板函数重载匹配规则可以引用《c++ primer》中的一段话来总结: 对于一个调用,其候选函数包括所有模板实参推断成功的函数模板实例。 候选的函数模板总是可行的,因为模板实参推断会排除任何不可行的模板。 与往常一样,可行函数(模板与非模板)按类型转换 (如果对此调用需要的话)来排序。当然,可以用于函数模板调用的类型转换是非常有限的。 与往常一样,如果恰有一个函数提供比任何其他函数都更好的匹配,则选择此函数。 但是,如果有多个函数提供同样好的匹配,则: 如果同样好的函数中只有一个是非模板函数,则选择此函数。 如果同样好的函数中没有非模板函数,而有多个函数模板,且其中一个模板比其他模板更特例化,则选择此模板。 否则,此调用有歧义。 看着有点不知所以然,我们一条条来看。这里我给整个过程分为三步: 第一步:模板函数重载匹配会将所有可行的重载列为候选函数。 ...

2023-12-26

sscom 串口调试工具

SSCOM串口调试助手是一款串口通讯软件,在这款软件中主要帮助用户在电脑中对串口进行管理和设置;软件能在任意串口中设置参数,并提供数据的接收、发送等操作,让用户能更加方便轻松的对其管理;软件界面简洁,可以通过十六进制的方式来进行数据转换,操作流程十分的方便,上手难度极低,十分好用。 软件特色 1、SSCOM还支持多种发送方式,如单次发送、循环发送、分段发送等; 2、能够满足不同需求场景的使用要求; 3、SSCOM的独立性较高,支持在没有Python等其他软件的环境下使用,更加方便了用户的使用操作。 软件优点 1、在使用SSCOM时,我们只需将串口设备连接到电脑上; 2、并在SSCOM中选择对应的串口号和通讯协议,设置好波特率等参数,即可开始使用; 3、在数据接收时,我们可以进行数据的实时监控和记录,并且支持数据的导出; 4、在数据发送时,我们可以通过简单的设置实现数据的快速发送和测试。

2023-12-20

NetAssist 网络调试工具

NetAssist,就是网络助手,可以模拟网络之间的通信,互相发送消息 网络调试助手是一款用于Android端网络调试的工具,支持TCP,UDP协议,支持机器自带的串口(可能需要root权限)支持多种网络端口的链接,让网络维修人员或者是个人能够更加简单的对网络进行深度的调试,从而让整个网络更加的符合用户在使用上面的需求,如果你需要的话这款自带中文的调试软件能够满足你的需求。 网络调试助手(NetAssist)软件功能 支持TCP Server,TCP Client, UDP 支持机器自带的串口 支持USB转串口 Esp Touch配网 以对话形式显示通信数据,支持同时建立多个连接 16进制格式数据发送

2023-12-20

基于C++CORBA高级编程

全书共22章,系统地介绍了CORBA的基本体系和概念,IDL语义和映射为C++的规则、POA和对象生命周期,CORBA机理和ORB,动态CORBA特性以及CORBA重要的服务程序。本书的独到之处在于它不仅介绍概念及资源,更重要的是讲述超越API的CORBA内部机制

2023-12-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除