- 博客(50)
- 收藏
- 关注
原创 Qt 跨线程内存管理陷阱:QSharedPointer、deleteLater() 与 QPointer 的致命组合
一次网络请求队列管理的随机崩溃,揭示了 Qt 内存管理中容易被忽视的陷阱,特别是 QPointer 在跨线程场景下的竞态条件 💥
2025-12-21 16:11:39
952
原创 Qt功能QSortFilterProxyModel指南
本文全面介绍Qt中的QSortFilterProxyModel代理模型类,详细讲解其在QWidget和QML中的使用方法。文章从基础概念入手,分析其核心原理与架构,通过数据流转图和UML类图展示工作机制。重点提供QML集成方案,包括自定义C++原始模型类和代理模型类的完整代码示例。内容涵盖典型应用场景、性能优化建议及常见问题解决方案,帮助开发者快速掌握这一重要组件,实现数据的高效过滤与排序功能。
2025-10-31 14:37:57
1097
原创 Qt功能Q_GADGET宏
Qt中的Q_GADGET宏为非QObject类提供元对象系统的部分功能,支持枚举、属性和反射访问,但不具备信号槽和对象树管理。它与Q_OBJECT的主要区别在于:Q_GADGET适用于轻量级值类型和数据类,而Q_OBJECT适合需要信号槽通信和生命周期管理的对象。使用时需注意Q_GADGET不支持NOTIFY属性和动态属性,且必须注册元类型才能与QVariant配合。建议根据需求选择:仅需描述性功能时用Q_GADGET,需要完整对象特性时用Q_OBJECT。
2025-10-29 15:16:09
699
原创 Qt如何翻译JSON内容
📝 Qt JSON内容翻译方案 本文介绍了在Qt应用中实现JSON内容多语言翻译的方法。通过qsTranslate函数将JSON文本作为翻译源,结合Qt标准翻译机制,实现动态语言切换。
2025-10-19 15:44:02
931
原创 Qt 的信号signal的参数是否会在内部被拷贝?
传递到 QueuedConnection 的参数类型必须可通过QMetaType构造与销毁。若为自定义类型:使用声明。。指针类型特殊处理:如果参数名以结尾,视作,不会复制对象本身,仅复制指针值。Qt 的参数是否复制,核心看连接类型:Direct 不复制、Queued 一定复制、BlockingQueued 不复制但阻塞。掌握这一点,有助于做出正确的 API 设计与性能权衡,避免隐藏的生命周期问题与不必要的开销。祝你写出更优雅高效的 Qt 信号/槽系统!🎉。
2025-09-01 17:59:14
752
原创 C++继承中虚函数调用时机问题及解决方案
本文探讨了C++继承中虚函数在构造函数调用的时机问题及解决方案。通过设备管理案例,分析基类构造函数调用虚函数时派生类重写可能失效的问题,提出采用模板方法模式结合延迟调用的优雅解决方案。具体实现包括:1) 在基类中使用QTimer延迟调用虚函数;2) 通过虚函数getFilterList()让派生类提供自定义过滤列表;3) 避免在构造函数中直接调用虚函数。这种方法确保了对象完全构造后虚函数机制正常工作,解决了继承体系中初始化顺序导致的虚函数调用问题。
2025-08-01 21:31:36
1049
2
原创 C++多线程:4种典型方案深度解析
还在为多线程数据竞争和死锁问题头疼?本文通过4个真实代码示例,深度剖析:🔥 原子操作的无锁编程技巧🔒 互斥锁的最佳使用姿势⚡ Qt线程方案的工程实践🚀 moveToThread的高效应用场景
2025-04-28 15:26:32
933
原创 GitLab CI/CD学习教程(第四章gitlab-ci.yml)
什么是.gitlab-ci.yml?在上一章节中,我们详细讲述了Pipeline的定义,本章节将重点讲解如何对Pipeline进行精细化的控制。
2025-03-24 12:27:12
1995
原创 GitLab CI/CD学习教程(第三章Pipeline)
在 GitLab CI/CD 中,Pipeline是自动化的构建、测试和部署过程的集合。它是的核心概念之一,帮助开发者通过配置文件定义一系列的工作流,并自动执行这些流程。一个Pipeline通常由多个Stage(阶段)和Job(任务)组成,它们按照一定的顺序执行。每个Job执行一个具体的任务。比如运行单元测试、构建代码或部署应用等。
2025-03-19 11:20:35
1784
2
原创 GitLab CI/CD学习教程(第一章概念)
CI(持续集成)是代码提交后自动构建、测试,快速发现错误。CD(持续交付/部署)是自动将代码部署到测试或生产环境。
2025-03-12 19:05:08
1195
原创 解决qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
当你在程序中遇到 <font color="red"><b>qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed</b></font>错误时,可能意味着SSL/TLS协议栈未能正确初始化。 本文将深入分析常见原因,并提供可直接操作的解决方案。
2025-02-27 16:46:30
2166
原创 Qt/C++ 项目快速生成器
一个简单但强大的 Qt/C++ 项目生成器,让您的项目创建变得轻松愉快!C++的项目有时候创建比较麻烦,这个小脚本仅需要点击几下鼠标即可生成一个C++项目。
2025-02-27 10:32:52
423
原创 Python中asyncio的多种用法:异步同步
Python 的 asyncio 模块为异步编程提供了强大的支持,但在某些场景下,我们可能需要处理异步任务与非异步(同步)任务的顺序执行或并行执行。本篇文章将逐步带你了解如何在 Python 中处理这些不同类型的任务。
2024-10-12 15:58:57
3002
3
原创 C++库std::clamp
`std::clamp` 是 C++17 引入的一个强大而简洁的函数,它为值的范围限制提供了一种标准化的解决方案。通过本文的详细讲解,我们了解了 `std::clamp` 的基本用法、高级特性、实际应用场景以及性能考虑。在日常编程中,合理使用 `std::clamp` 可以让我们的代码更加简洁、高效、易读。希望这篇教程能够帮助您在实际项目中熟练运用 `std::clamp`,提高代码质量和开发效率。
2024-09-14 12:23:46
7246
原创 【Qt的TS文件转换器】利用Python实现自动化TS文件转换
在开发多语言Qt应用时,管理和更新翻译文件是一项繁琐但必要的任务。这个工具旨在自动化Qt Linguist TS文件的转换过程,支持不同语言之间的转换,特别关注中文变体和其他语言。
2024-08-29 12:04:18
1540
原创 解决Qt多线程中fromRawData函数生成的QByteArray数据不一致问题
本文探讨了在Qt多线程应用中使用QByteArray时可能遇到的数据不一致问题。文章首先介绍了一个典型场景:在工作线程中读取设备数据,然后通过信号-槽机制传递到主线程进行处理。问题出现在不同线程中打印同一QByteArray对象时得到不一致的结果。文章分析了问题的根源:使用QByteArray::fromRawData()方法创建了共享底层数据的QByteArray,导致在跨线程传递时可能出现数据变化。解决方案是在发送信号时创建QByteArray的完整副本,确保数据的独立性和一致性。
2024-08-21 17:30:19
919
原创 解决Qml中的Rectangle圆角外部区域也会触发鼠标事件的问题
在很多场景下,有用到各种带有圆角属性的Rectangle作为交互的控件,当radius设置的比较大时,鼠标悬浮在外部区域也会触发各种信号。比较头疼。比如,以下代码通过实现了一个圆形控件。然后创建一个,当鼠标进入圆形区域,希望看到圆的颜色会发生改变。然而实际效果却是还没进行圆形区域就触发了信号,虽然设置了,圆角外部还是属于的范围,所以会触发。
2024-08-05 18:56:11
474
原创 Git钩子Hook功能
Git Hooks是Git内置的一种机制,允许在特定事件发生时执行自定义脚本。Git Hook可以在客户端和服务器端配置,经常用于自动化任务、增强开发流程以及确保代码质量。
2024-07-15 16:22:08
3750
原创 Git常用功能
拉取(Pul)与获取(Fetch)重置(reset)贮藏(stash)补丁(patch)摘取(cherry-pick)追溯(Blame)忽略(ignore)
2024-07-02 18:38:40
1335
原创 Git中的变基(Rebase)
在Git中,下载后运行变基通常是指使用git pull命令结合--rebase选项,从远程仓库获取最新的更新并将其应用到当前分支的操作。与默认的git pull不同,--rebase选项会将远程分支的更改应用到你的提交之下,以保持提交历史的线性。变基操作会将当前分支的提交“移植”到另一个基点上,这个基点通常是远程分支的最新提交。这种操作会重写提交历史,使其看起来像是从新的基点上直接进行的开发。
2024-06-24 11:20:06
3898
原创 Window下程序使用CrashPad库生成dump并定位代码
在Windows应用程序开发中,崩溃是不可避免的。为了提高应用程序的稳定性和可靠性,开发者需要一种有效的方法来捕捉和分析崩溃信息。Crashpad是Google开源的崩溃报告工具,可以帮助我们在应用程序崩溃时生成详细的dump文件。本文将以Window程序为例,介绍如何集成Crashpad并生成dump文件。Crashpad是一个跨平台的崩溃报告工具,支持Windows、macOS和Linux。在程序崩溃时捕获崩溃信息并生成dump文件存储崩溃报告传递崩溃报告到服务器进行分析。
2024-06-13 17:42:15
2383
7
原创 Qt/C++中的异步编程
异步编程是现代应用程序开发中不可或缺的一部分。它允许程序在执行耗时任务时保持响应性,特别是在GUI应用程序中。在Qt/C++中,有多种方式来实现异步编程。本文将重点介绍如何使用Qt中的QtConcurrent库,Qml中ES6标准的Promise还有C++标准库std::future,std::promise进行异步编程,并讲解他们之间的区别。
2024-06-11 22:51:12
1902
原创 通过CMake的option启用或禁用特定功能
option命令用于定义布尔型选项,可以在构建项目时启用或禁用特定的功能。option可以在CMake配置时被打开或关闭,从而影响构建流程。通过option,我们可以为用户提供灵活的配置方式,使其可以根据需要启用或禁用某些功能。不修改CMakeLists情况下启用或禁用option, 各种option的使用场景与实际应哟
2024-06-07 15:08:11
3922
原创 C++库std::ref
C++库std::ref介绍, 语法,示例, 使用场景, 多线程编程, 实现回调机制,标准库算法, 绑定函数。与直接引用&的区别。注意引用生命周期和与标准库容器的结合
2024-06-06 15:04:35
2072
原创 实现飞书机器人推送消息到指定群组或者用户
飞书是一个集成了聊天、协作和办公功能的企业级平台,广泛应用于企业内部沟通和协作。飞书机器人(Feishu Bot)是一种强大的工具,允许开发者通过编程接口与飞书进行互动,从而实现自动化消息推送和任务管理。本文将详细介绍如何通过飞书机器人推送消息给指定的人或者群组,帮助您快速上手。
2024-06-01 18:42:34
4975
原创 通过PyInstaller把Python文件打包成应用程序
这篇博客文章为程序员提供了使用PyInstaller将Python程序打包成独立可执行文件的详细教程。内容包括PyInstaller的安装、基本使用方法、高级用法,通过spec文件打包程序,常见问题解决及最佳实践,旨在帮助读者快速掌握这项工具,提高Python项目的分发和部署效率。
2024-05-31 00:21:31
1153
原创 使用Swagger UI展示各种OpenAPI文档
启动http-server时,会有一些信息显示哪些地址可以输入。进入swagger-ui的源码目录,安装依赖。swagger ui 依赖Node.js,的项目目录,然后运行以下命令来启动。-p 后面是指定的端口号。
2024-05-08 11:01:13
932
1
Qt + TS文件自动转换脚本工具 + 多语言支持转换 + 提升项目本地化效率
2024-08-28
桌面应用开发 + PyQt + Qt Quick + 示例代码 + 快速入门
2024-07-19
Git Hooks + 自动化脚本 + 示例代码 + 提高开发效率
2024-07-15
软件著作权登记模板+软著登记源代码模板+软件著作权登记信息表模板
2024-07-03
基于QCustomPlot的支持使用 Qml 的简单工程示例
2024-06-18
编译好的Crashpad库 (x86 & x64) - Release & Debug 版本
2024-06-13
生成dump+Crashpad+示例代码+崩溃分析
2024-06-13
CMake教程+CMake option+启用禁用特定功能代码示例+项目配置
2024-06-12
OpenSSL源码x86和x64库文件+OpenSSL+源码+Windows库+安全开发
2024-06-05
编程字体+思源黑体+高质量免费开源+开发设计利器
2024-06-05
通过Python实现飞书机器人推送消息到指定群组或者用户
2024-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅