- 博客(13)
- 收藏
- 关注
原创 常见的函数使用(一)
Qt核心功能摘要 contains()是Qt容器类的通用查找函数,用于检查元素是否存在,支持QJsonObject、QString等多种容器。QVariant是万能数据类型容器,可存储和转换Qt各种数据类型,常与Qt::UserRole配合使用存储自定义数据。QMimeData提供统一的数据封装方案,支持文本、图片和自定义MIME类型数据的跨应用传递。QJsonObject专门处理JSON数据,支持嵌套结构和多种数据类型操作,包含键值检查、数据读写和序列化功能。这些核心类为Qt开发提供了强大的数据存储、转换
2026-03-16 11:00:00
229
原创 Qt多线程第二部分_共享数据_锁
文章摘要: 本文介绍了多线程编程中的共享数据概念及其保护机制。共享数据指多个线程可访问的同一变量/对象,包括全局变量、类成员变量和堆区对象。当多线程同时修改共享数据时会出现数据竞争问题。解决方案是使用互斥锁(QMutex),通过"上锁-操作-解锁"的机制保护共享数据。文章详细讲解了两种加锁方式:手动加锁解锁和使用QMutexLocker自动管理锁。同时指出锁复用可能导致线程阻塞或死锁问题,建议一个共享数据对应一个锁。文中提供了多个代码示例,展示了共享数据的定义、锁的使用方法以及线程阻塞和
2026-03-04 23:42:09
536
原创 Qt多线程第一部分
摘要: Qt多线程编程通过将耗时任务移至子线程,避免主线程(UI线程)阻塞导致界面卡顿。核心方法包括使用QObject::moveToThread将工作对象移至子线程,并通过信号槽实现线程间通信。关键注意事项:子线程不可直接操作UI控件,需通过信号传递结果;线程对象应设为成员变量避免提前销毁;程序退出前需正确终止线程。相比继承QThread重写run()的方法,moveToThread更安全,能清晰区分代码执行线程。典型实现步骤:创建工作类→创建线程→移动对象→连接信号槽→启动线程。
2026-03-04 17:57:50
528
原创 数据结构:C++队列
首先,我们定义一个顺序队列类。为了解决 C 语言中类型不灵活的问题,我们使用 C++ 的模板(Template)。// 队头指针int rear;// 队尾指针// 最大容量public:// 构造函数:初始化队列// 判断队列是否为空// 判断队列是否已满 (循环队列逻辑)// 牺牲一个存储单元来区分空和满// 获取当前元素个数我们定义一个内部结构体作为节点,并在队列类中维护头尾指针。private:// 链表节点定义T data。
2026-03-03 23:52:59
350
原创 数据结构:栈
本文介绍了三种栈结构的C++实现:顺序栈、共享栈和链式栈。顺序栈采用静态数组存储,实现简单但容量固定;共享栈通过双指针机制让两个栈共享空间,提高内存利用率;链式栈使用动态内存分配,理论上可无限扩容。文章详细阐述了每种栈的设计思路和实现细节,包括关键操作如Push、Pop等的封装,并比较了它们的优缺点。顺序栈和共享栈适用于内存受限场景,而链式栈则更适合需要动态扩容的应用。
2026-03-03 23:44:36
366
原创 C++ 循环链表
本文介绍了C++中循环单链表和循环双链表的实现方法。在循环单链表中,节点初始化时next指针指向自身形成闭环,判断空表条件是头节点next指向自身,尾节点的特征是next指向头节点。循环双链表在单链表基础上增加prior指针,初始化时prior和next都指向自身形成双向闭环。其插入操作无需判断NULL,直接修改前后节点指针;删除操作通过修改前后节点指针并释放内存完成。循环链表的环状结构使得操作更加简洁健壮,无需处理NULL指针情况。
2026-03-03 00:21:24
547
原创 C++ 双链表
本文介绍了C++中双链表的基本实现,重点对比了C语言和C++在链表操作上的差异。主要内容包括:1)使用C++结构体定义双链表节点,通过构造函数初始化节点;2)利用C++引用特性简化链表初始化;3)详细讲解插入和删除操作的实现逻辑,强调指针操作的顺序和空指针检查;4)展示双向遍历的实现方法;5)提供完整可运行的代码示例。文章突出了C++特性(如构造函数、nullptr、引用等)如何使链表实现更安全高效,同时保持与C语言相似的操作逻辑。
2026-03-03 00:12:17
637
原创 HarmonyOS应用(ArkTS)——初次介绍
ArkTS是鸿蒙应用开发语言,核心特征包括.ets文件后缀和特有装饰器。@Entry标记应用入口页面,@Component定义UI组件,@State实现响应式状态管理。项目目录结构清晰,entry模块存放核心代码,分离逻辑与界面。ArkTS通过装饰器简化开发,实现数据驱动UI更新,提升开发效率。
2026-03-01 18:48:19
947
原创 TS基本语法速通
本文快速梳理TypeScript核心语法,为鸿蒙应用开发打下基础。主要内容包括:基础数据类型(boolean、number、string、Array等)、流程控制语句(if/else、for循环)、函数定义(匿名函数、箭头函数、可选参数等)以及面向对象编程(类定义、继承)。特别针对鸿蒙开发场景,重点介绍了ArkTS基础语法和常用特性,如模板字符串、枚举类型等,帮助开发者快速掌握TypeScript在鸿蒙开发中的关键应用。
2026-03-01 18:45:10
746
原创 Qt程序的打包
本文介绍了在Windows下使用Qt Creator编译Release版本及打包依赖库的方法:1)在Qt Creator中切换为Release构建套件并编译;2)使用Qt自带的windeployqt工具自动拷贝依赖库到exe所在目录,包括处理特殊模块(QML/数据库)的情况;3)提示缺失dll时的解决方法(从Qt安装目录复制)。特别强调必须使用Qt对应的命令行工具(MinGW/MSVC)才能确保windeployqt正常工作。这些步骤可帮助开发者快速完成Qt应用程序的发布准备。
2026-02-28 15:06:42
452
原创 单例的学习和使用
单例模式的核心使用场景是在需要全局唯一实例、资源独占或状态共享时,避免多实例导致的资源冲突和数据不一致。懒汉单例实现中,首次调用getInstance()时才创建实例,通过私有化构造函数、禁用拷贝/赋值操作确保唯一性,并使用双重检查锁保证线程安全。关键点包括:1)私有构造函数防止外部实例化;2)禁用拷贝构造和赋值操作;3)静态指针存储唯一实例;4)双重检查锁机制确保线程安全。唯一合法创建路径是通过getInstance()方法,典型调用方式为ClassName::getInstance()->meth
2026-02-28 15:05:46
581
原创 lambda表达式
本文介绍了C++中lambda表达式的基本语法和应用场景。lambda表达式通过捕获变量->返回类型{函数体}的结构定义匿名函数,支持值捕获[=]和引用捕获[&]两种变量捕获方式。文章重点说明了使用mutable关键字修改值捕获变量,以及通过()立即调用lambda的方法。特别强调了lambda在Qt信号槽连接中的优势,它能突破信号槽参数必须匹配的限制,通过空参数lambda间接调用目标函数,从而提升编程灵活性。文中还展示了lambda在简化代码、实现多槽连接等方面的实际应用示例。
2026-02-27 20:52:40
42
原创 数据结构/线性表/单链表(个人笔记)
单链表是一种非连续存储的线性结构,通过节点指针连接各元素。摘要要点:1) 单链表节点包含数据域和指向下一节点的指针;2) 分为带头节点和不带头节点两种实现方式;3) 主要操作包括初始化、插入(前插/后插)、删除和查找(按位置/按值);4) 带头节点链表操作更统一,不带头节点需特殊处理首节点;5) 头插法建立链表时新节点始终插入链表头部。链表适合频繁插入删除场景,但查询效率较低。
2026-02-27 20:35:47
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅