- 博客(124)
- 收藏
- 关注
原创 理解 Qt 的 sizePolicy:让界面真正按你的意图伸缩
答案通常不在布局本身,而在控件的sizePolicy。sizePolicy。它不是绝对尺寸,而是“倾向”和“规则”。这篇文章就用尽量直白的方式,讲清楚sizePolicy是什么、怎么用、什么时候会影响你的界面。
2026-08-06 21:31:10
248
原创 【qt例1】富文本编辑器代码逐行讲解2
();它分两部分看:[] {...这是一个 lambda,也就是“匿名函数”。()表示:这个 lambda 定义完立刻调用。所以它叫“立即执行 lambda”。等价理解可以接近于:只是这里没有单独写一个命名函数,而是原地写了一个匿名函数并马上执行。常见 lambda 形式有这些:}();连接信号时的 lambda例如:立即执行 lambda例如这里创建 highlightFormat。
2026-08-03 22:41:24
195
原创 【qt例1】富文本编辑器代码逐行讲解1
本文介绍了基于Qt框架的文本编辑器核心模块实现。main.cpp作为程序入口,初始化QApplication并设置应用信息,启动主窗口;DocumentModel类封装文档数据模型,管理文件路径、修改状态和显示名称;EditorWidget类提供丰富的文本编辑功能,包括纯文本/HTML/Markdown格式处理、查找替换、光标控制、格式设置等,并通过信号槽机制与界面交互。这些模块共同构建了一个具备基本文本编辑功能的应用程序框架,支持文档状态管理和多种文本格式处理。
2026-07-25 21:31:30
212
原创 qt designer中没有找到splitter怎么办捏~小教程一则
QSplitter 是 Qt 里的一个“可拖动分隔容器”。把多个控件并排放在一起中间出现分隔条用户可以用鼠标拖这个分隔条,改变两边或多边的大小左边目录中间编辑器右边预览只能自动排开不能手动拖大小三块之间会有可拖动的分隔线可以自己拉宽、拉窄Layout = 自动摆放Splitter = 自动摆放 + 允许拖拽改大小Horizontal:左右分开Vertical:上下分开是否允许拖到完全折叠setSizes()初始宽度/高度比例。
2026-07-23 19:47:57
204
原创 Qt 窗口状态持久化:saveGeometry() 和 saveState()
saveGeometry/saveState 负责导出窗口状态,restoreGeometry/restoreState 负责恢复窗口状态,QSettings 负责把这份状态真正存下来。用户上次关闭窗口时的大小、位置、工具栏状态,下次启动时还能恢复。它们本身不会自动保存到文件里,只是把状态导出/恢复成一段数据。真正负责“跨程序运行保存”的,一般是。
2026-07-21 20:40:50
304
原创 Qt QMessageBox知识点
YesNoOkCancelRestoreDiscard这样用户不需要翻译你的意图。这也是桌面应用中很重要的一点:按钮文字应该表达业务动作,而不是仅表达通用态度。QMessageBox 是标准消息对话框静态写法适合简单提示,对象式写法适合复杂选择setText 是主文本,setInformativeText 是补充说明setIcon 用来表达弹窗语义addButton 可以添加自定义按钮并返回按钮对象Role 是按钮的语义标签。
2026-07-21 17:27:50
370
原创 c++复习自存--流、异常处理、多线程与C++工程规范
iostream>异常是程序运行时发生的不可预期错误(内存访问越界、参数非法、文件打开失败、运算错误等),会打断正常执行流程。传统C语言依靠返回值/全局错误码判断错误,容易被忽略;C++提供独立的异常机制,分离业务逻辑与错误处理,异常发生时自动向上逐层匹配捕获代码。业务场景自定义专属异常,统一继承,重写what()private:public:// 抛出自定义异常throw UserErr("用户ID不存在");
2026-07-09 09:31:20
409
原创 c++复习自存--栈和队列、STL标志位、智能指针
原生裸指针T*内存泄漏new分配堆内存后忘记调用delete释放,程序退出前内存无法回收;双重释放:同一堆地址重复执行delete,触发未定义行为(程序崩溃、堆损坏);野指针:内存释放后仍保留原指针,后续解引用访问非法内存;异常内存泄露new后代码抛出异常,跳过delete执行路径;所有权混乱:多段代码共享同一裸指针,无法判断谁负责释放内存。
2026-07-09 09:26:32
179
原创 c++复习自存--理解函数对象、lambda表达式、STL算法
捕获列表](参数列表){函数体};int main()// 无捕获、无参数lambdahello();// 调用匿名函数return 0;auto关键字用于自动推导lambda的独特函数对象类型,lambda无法直接显式声明类型,必须用auto接收。STL算法是标准库提供的通用处理函数集合,头文件为,核心设计思想与容器解耦全部基于迭代器实现,不依赖容器底层结构,一套算法可作用于vector、list、string等所有支持迭代器的容器;
2026-07-08 11:16:48
245
原创 c++复习自存--标准模板库STL
std::set与是STL有序关联容器,头文件为<set>容器内元素自动保持升序有序,插入、查找、删除操作平均时间复杂度 O(logN);不支持下标随机访问,仅能通过双向迭代器遍历;插入、删除操作不会引发内存整体移位,仅调整树节点指针,操作后未操作元素的迭代器保持有效;二者核心区分:set:元素唯一不重复,相同值无法插入;multiset:允许存储多个重复值,可存放完全相同的元素。映射类是存储键值对(key-value)有序映射std::map。
2026-07-07 13:02:29
168
原创 c++复习自存--类型转换运算符、宏和模板
模板无疑是 C++语言中最强大却最少被使用的特性之一。在 C++中,模板让程序员能够定义一种适用于不同类型对象的行为。这听起来有点像宏(参见前面用于判断两个数中哪个更大的简单宏 MAX),但宏不是类型安全的,而模板是类型安全的。
2026-07-06 22:21:41
185
原创 c++复习自存--多态、运算符类型与运算符重载
C++11及以后标准支持自定义后缀字面量,通过重载operator""实现,为数字、字符串自定义专属转换逻辑,简化常量书写。// 自定义米长度字面量return val;// 自定义字符串后缀return 0;
2026-07-06 14:34:47
594
原创 c++复习自存--继承
覆盖的一种极端情形是,Tuna::Swim( )可能隐藏 Fish::Swim( )的所有重载版本,使得调用这些重载版本会导致编译错误(因此称为被隐藏),三种继承的区别,只影响基类 public/protected 在子类中的访问等级,完全不改变基类 private 的访问限制。因此,如果使用 Derived 类的实例调用方法 DoSomething( ),调用的将不是 Base 类中的这个方法。私有继承意味着在派生类的实例中,基类的所有公有成员和方法都是私有的——不能从外部访问。
2026-07-05 14:34:55
242
原创 c++复习自存--指针、类和对象
复制这个类的对象时,将复制其指针成员,但不复制指针指向的缓冲区,其结果是两个对象指向同一块动态分配的内存。由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目标是确保 President 类有且只有一个化身,即有了一个 President 对象后,就禁止创建其他的 President 对象。退栈时,将弹出栈中的所有对象,因此编译器需要在 main( )末尾调用析构函数~MonsterDB(),但这个析构函数是私有的,即不可用,因此上述语句将导致编译错误。伪析构函数为空,即不释放动态分配的内存。
2026-07-04 16:24:55
247
原创 c++复习自存--函数
在同一个作用域(全局/同一个类)中,存在多个函数名完全相同,但形参列表存在差异的一组函数,编译器会根据调用时传入实参的个数、类型、顺序自动匹配对应函数,这个机制称为函数重载。程序运行中没有独立变量名、转瞬即逝、用完立刻销毁的数值/对象,就叫临时值。103.14"abc"a + bx * 2add(1,2)vec.back()临时值存放在寄存器/临时内存,没有左值身份,不能取地址、不能被普通左值引用绑定。值传递:能接收临时值f(10);// 字面临时值 OKf(2 + 3);
2026-07-02 21:21:55
349
原创 快应用day2项目架构
一般来说,build/ 是 hap build 或 IDE 自动生成的结果,不建议手改,因为下次构建会覆盖。这是打包后的快应用安装包。发布、安装、调试时会用到。
2026-05-16 19:37:55
402
原创 快应用day1环境搭建与第一个交互页面
安装快应用开发所需的所有工具。:在手机上成功运行第一个 “Hello World” 项目。:通过亲手编写代码,掌握页面结构、数据绑定和事件响应的核心概念。
2026-05-13 21:47:20
395
原创 HNU计算机系统期中题库详解(四)C语言与程序运行(数据类型、指针、内存、编译链接)
同一平台下,指针的长度由机器字长决定,与指向的数据类型无关。
2026-04-24 21:02:03
448
原创 HNU计算机系统期中题库详解(三)数据表示与运算(进制 转换 、补码、浮点数、截断、扩展)
二进制小数转十进制方法:将每一位数字乘以其对应的权值。
2026-04-24 18:11:39
706
原创 HNU计算机系统期中题库详解(一)计算机组成原理(CPU、指令系统、存储器、运算基础)
w位补码:负溢出结果 = 真实结果2w+2^w2w;正溢出结果 = 真实结果−2w-2^w−2w同号两数相加才可能溢出;异号相加永不溢出OFCn−1⊕CnOFCn−1⊕CnCn−1C_{n-1}Cn−1最高数值进位,CnC_nCn符号位进位OF溢出标志:仅针对有符号整数;同号相加结果符号反转=溢出对整数运算zxyz=x+yzxy,设置条件码CF的表达式为ACF→无符号溢出;OF→有符号溢出;
2026-04-20 23:46:03
983
2
原创 力扣104.二叉树的最大深度 110. 平衡二叉树
遍历方式访问顺序典型应用前序遍历根 → 左 → 右复制树、序列化中序遍历左 → 根 → 右BST 排序输出后序遍历左 → 右 → 根计算高度、释放树层序遍历逐层从左到右BFS、最短路径LeetCode 104 二叉树的最大深度可以用后序遍历或层序遍历。LeetCode 110 平衡二叉树使用后序遍历自底向上判断高度差。
2026-04-11 16:03:24
215
原创 Git 协作模拟:分支管理、PR 流程与冲突解决
本指南将模拟两个开发者在同一仓库中并行开发新功能,通过 Pull Request(PR)协作,并处理合并冲突。整个过程涵盖分支创建、提交、推送、PR 审查、冲突解决以及常用 Git 命令。
2026-04-10 15:11:09
640
原创 力扣 215. 数组中的第K个最大元素
该算法每次分区后,只需递归处理一侧,因此平均时间复杂度为 O(n)。如果需要严格 O(n),可以使用 BFPRT(中位数之选中位数)算法,但实现较为复杂,随机化快速选择通常已满足要求。快速选择算法基于快速排序的分区思想,期望时间复杂度为 O(n),最坏情况 O(n²)。可以通过随机化选择基准元素来避免最坏情况,使其期望时间复杂度稳定为 O(n)。如果需要第k小,只需要将findKthLargest函数中的return改为。
2026-04-06 10:15:49
201
原创 力扣 76. 最小覆盖子串
所有字符(包括重复个数)的最短连续子串,返回该子串。若不存在,返回空字符串。(双指针)算法,时间复杂度 O(m + n),空间复杂度 O(字符集大小)。
2026-04-04 18:12:31
70
原创 力扣 3.无重复字符的最长子串
或者用滑动窗口 + unordered_map。解释: 无重复字符的最长子串是。解释: 无重复字符的最长子串是。解释: 无重复字符的最长子串是。
2026-03-31 17:40:05
108
原创 力扣 347. 前 K 个高频元素
解法一适用于 k 较小或中等的情况,代码简洁。解法二达到了 O(n) 的最优时间复杂度,但需要额外 O(n) 空间。两种解法均可通过题目测试。需要提供比较函数,例如存储// 最小堆,按 first 升序堆是一种高效维护极值的数据结构,核心是上浮和下沉操作。C++ 的封装了堆,使用方便。理解堆的性质和操作,是解决许多算法问题的基础,如 Top K、合并 K 个有序序列、中位数等。
2026-03-30 19:54:50
412
原创 qt项目如何打包成exe
将整个文件夹(包含 .exe 和所有 .dll、plugins 等)打包成 .zip 或使用 Inno Setup 等工具制作安装程序,即可分发。如果提示缺少某些 dll,可以再次运行 windeployqt 并加上 --verbose 参数查看详细信息。windeployqt 会自动分析 exe 的依赖,并将所有需要的 Qt 动态库(.dll)复制到同一目录。在资源管理器中,双击 todo-list-demo.exe 运行程序,检查是否正常启动。进入项目文件夹,进入build。这时右键选择终端打开。
2026-03-28 22:06:36
254
原创 QML技巧——在Qt Creator中可视化qml文件
在Qt Creator插件中搜索qml,可以看到有个Qt Quick Designer插件,点进去后把右上角inactive键点一下就是active,不过此时上方会显示没有加载,所以要先退出qt再重新打开。之后在Qt Cretor中打开一个qml文件时,就可以对文件像qt widgets一样进行编辑,加入控件,而不用自己写代码。1.左侧组件库拖拽使用:Text、Button、TextField、Rectangle、Layout、ListView 等。2. 中间画布实时预览界面,直接拖动、缩放、对齐控件。
2026-03-28 20:21:31
474
原创 力扣994. 腐烂的橘子
std::queue是简洁的 FIFO 容器,提供基本的入队、出队、访问队首队尾、判空和取大小操作。它不提供迭代器,因此无法遍历内部元素而不破坏队列。如果需要遍历,可考虑std::deque或std::list直接操作。在 BFS 等算法中,queue是核心工具,配合push和pop使用。
2026-03-28 11:08:29
544
原创 力扣350.两个数组的交集 II
哈希表法适合数组元素范围大、未排序且内存充足的情况,并能利用大小优势优化。排序+双指针适合内存有限、可以排序的场景,且当数组已排序时效率最高。处理磁盘大数据时,结合哈希表与分块读取是常用策略。
2026-03-28 10:32:59
190
原创 力扣242.有效的字母异位词 349. 两个数组的交集
unordered_set 详解 std::unordered_set 是 C++ 标准库中的无序关联容器,基于哈希表实现,用于存储唯一键的集合。它具有高效的查找、插入和删除操作,平均时间复杂度为 O(1)。 核心特性 唯一性:容器内元素唯一,不允许重复 无序性:元素存储顺序与插入顺序无关 哈希支持:依赖哈希函数快速定位元素 常用操作 插入元素:insert(), emplace() 删除元素:erase() 查找元素:find(), count() 容量查询:size(), empty() 迭代器:beg
2026-03-26 10:48:52
629
原创 力扣1.两数相加 217.存在重复元素 哈希表
本文介绍了LeetCode经典问题“两数之和”的两种解法。问题要求在给定数组中找到和为特定目标值的两个数,并返回其下标。解法一采用暴力枚举,时间复杂度O(n²);解法二利用哈希表优化,时间复杂度降至O(n)。文章详细讲解了哈希表在C++中的实现及相关函数操作,包括插入、查找、删除等核心方法。通过对比两种解法,展示了如何用空间换时间优化算法效率,为处理类似问题提供了实用思路。
2026-03-23 19:29:47
414
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅