- 博客(16)
- 收藏
- 关注
原创 Qt QMainWindow 详解:菜单栏、工具栏与状态栏实战
的基础上,预置了一套标准布局:顶部菜单栏、四周可停靠区域、底部状态栏、中间中央部件。理解这套骨架,是写出一个「像样」的桌面应用的第一步。它足够简单,但当你真正要做一个桌面软件时,很快就会发现缺东西:菜单放哪?描述「一个可执行的操作」,它可以同时出现在菜单、工具栏、右键菜单里,共享同一份状态和同一个信号。是助记符,按下 Alt 后会显示下划线,Alt+S 可直接触发。把前面三块拼起来,做一个能统计字符数、行数、单词数的小工具。这是编辑器类应用的经典需求。搜索框、字号选择、颜色按钮,都是工具栏的常见成员。
2026-11-04 10:21:30
207
原创 30 分钟搞定 Qt 布局管理器|Qt 6 入门实战(5)
在 Qt 开发中,布局系统是构建用户界面的核心基础。如果不使用布局,控件的位置和大小需要手动计算,窗口尺寸变化时控件无法自适应,导致界面错乱。外层使用 VBox 纵向排列表单区和按钮区,内层分别使用 QFormLayout 和 HBox,实现清晰的分层结构。QFormLayout 是专为表单设计的布局类,自动将标签和输入控件按两列排列,适合登录、设置等表单界面。以上代码整合了布局、容器控件和关键参数的使用,可直接编译运行,作为实战参考。Qt 提供了三种最常用的基础布局类,分别适用于不同的排列需求。
2026-10-19 17:07:24
153
原创 Qt 控件速查手册:从入门到实战(附完整代码)
Qt 提供了丰富的控件库,本文聚焦最常用的 11 个控件,覆盖输入、展示两大类场景。窗口包含姓名输入、性别单选、学历下拉、年龄旋钮、技能复选、工作年限滑块、个人简介多行文本、提交按钮、进度反馈和已提交列表。用于整数输入,可设置范围,valueChanged 信号实时反馈。下表汇总 11 个控件的核心信号与常用方法,方便日常开发快速查阅。输入类控件是交互的核心,下面逐个说明其核心方法、信号与典型用法。最常用的触发控件,点击后发射 clicked 信号。支持多行文本和富文本,适合备注、描述等长文本输入。
2026-10-16 11:58:25
210
原创 30 分钟搞懂 Qt 信号槽和坐标系统:Qt 6 入门实战(3)
有时候 Qt 内置的信号不够用,比如"两个 MyLabel 想联动"——一个销毁了通知另一个。写一个自定义信号的例子:Q_OBJECTpublic:signals: // 自定义信号区// 信号只需要声明public slots: // 自定义槽区// 槽需要实现qDebug() << "[MyLabel 收到信号]" << text;signals 里的函数只有声明,没有实现(Qt 自动生成)槽函数要正常实现。
2026-10-15 19:53:11
190
原创 Qt 控件入门:QLabel 从拖拽到对象树,一篇讲透
Qt 的 QObject 类维护了一个父子关系链表。当你创建一个 QObject 子类对象并指定 parent 时,这个对象就会被加入父对象的 children 列表。父对象析构时,会依次 delete 所有子对象。这棵树就是对象树。QWidget 继承自 QObject,所以所有控件天然支持对象树。窗口是根,控件是枝叶,层层嵌套,构成整个界面。Q_OBJECTpublic:注意Q_OBJECT宏,它启用 Qt 的元对象系统,是信号槽和属性系统的前提。
2026-10-14 20:28:09
251
原创 Qt 6 从零开始实战(1):30 分钟,从一行代码到第一个能交互的 Qt 窗口
下一篇我们给这个空窗口加点东西:加按钮、加标签、用布局管理器把它们摆好,然后再加一个“点按钮关闭窗口”的交互——Qt 最经典的信号槽机制。网上教程要么太老(Qt 5 + qmake),要么太散(一个知识点一篇博客,没体系),要么上来就讲源码劝退新手。这个系列的目标就是补这个空档:用实战项目驱动,每篇都能跑、能用、能看懂,分阶段完成一个完整的桌面工具。MinGW 路径一般在。:账号注册用免费的个人账号就行,学习阶段不需要商业 license。第一次会编译几分钟(Qt 第一次编译很慢),之后增量编译就快了。
2026-10-13 20:45:57
212
原创 list的学习
list(size_t n,const value_type &val=value_type()) 构造的list中包含n个值为val的元素。3、任意位置插入和删除效率低,需要搬移元素, 任意位置插入删除效率高,为o(1)2、list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向前一个或后一个元素。3、list与forward_list非常相似,但forward_list只能朝前面迭代。
2025-09-24 11:51:18
1051
原创 vector()的使用
erase删除pos位置元素后,pos位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代 器不应该会失效,但是:如果pos刚好是最后一个元素,删完之后pos刚好是end的位置,而end位置是 没有元素的,那么pos就失效了。3、本质讲,vector使用动态分配来存储它的元素,当新元素插入时,这个数组需要被重新分配大小,为了增加存储空间,其做法是,分配一个新的数组,让后将全部数组转移到这个数组。5、因此,vector占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。
2025-09-19 09:11:53
917
原创 string详解
3、resize(size_t n)与resize(size_t n,char c) 都是将有效字符改变到n个,不同的是当字符个数增多时,一个是用0填充,一个用c来填充多出来的元素空间,如果改的时候元素个数增多,底层空间容量也会改变。4、reserve(size_t res_arg=0) 为string预留空间,不改变有效元素个数,当reserve的参数小于string的底层空间总大小,reserve不会改变容量大小。2、clear()只是将string中有效字符清空,不改变底层空间大小。
2025-09-15 18:45:49
912
原创 c++类和对象(1)
比如:对于电脑这样一个复杂的设备,提供给用 户的就只有开关机键、通过键盘输入,显示器,USB插孔等,让用户和计算机进行交互,完成日 常事务。protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)在上面的person类对象中 person就像一家白纸 实例化是对白纸的填充。当在cpp文件中定义时要使用.h文件的类的名字 用::person来引用。在使用不同类时我们也需要根据需要使用::来调用不同的类。在类中的变量我们成为成员变量。
2025-08-17 22:46:14
824
原创 c++入门
5. 实际上cout和cin分别是ostream和istream类型的对象,>>和也涉及运算符重载等知识, 这些知识我们我们后续才会学习,所以我们这里只是简单学习他们的使用。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。2. cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含< iostream >头文件中。a和ra的地址是同一个,在这里ra++,也是a++,反之同理。
2025-07-31 20:25:58
691
原创 二叉树的理解与题目
在树形结构中,我们最常⽤的就是⼆叉树,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结点 加上两棵别称为左⼦树和右⼦树的⼆叉树组成或者为空。若规定根结点的层数为 1 ,具有 n 个结点的满⼆叉树的深度h=log(n+1)( log 以2为底, n+1 为对数)1. 若 i>0 , i 位置结点的双亲序号: (i-1)/2;2. 若 2i+1,左孩⼦序号: 2i+1 , 2i+1>=n 否则⽆左孩⼦。3. 若 2i+2,右孩⼦序号: 2i+2 , 2i+2>=n 否则⽆右孩⼦。
2025-07-18 14:58:31
926
原创 c语言文件操作
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。可以使pf指向某个文件的文件信息区(是一个结构体变 量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联 的文件。在编写程序的时候,在打开文件的同时,都会返回一个FILE*的指针变量指向该文件,也相当于建立了指针和文件的关系。缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。文件在读写之前应该先打开文件,在使用结束之后应该关闭文件。
2025-06-06 23:16:50
255
原创 浮点型的数据存储
0.5的二进制为0.1,由于规定正数部分必须为1,小数点右移,变成1.0*2^(-1)当e为八位时,它的取值范围在0-255;当e为11位时,它的取值范围在2047。将e的值减去127(或1023),得到真实值,再将有效数字m前加上第一位1。根据IEEE754规定,存入内存时e的真实值必须再相加一个中间数。阶码就是e(-1)+127=126,表示为01111110。m不在加上第一位的1,而是还原0.xxxxx的小数。2-3之间表示e的部分有八个bit位。e=1-127(或e-1023)
2025-01-05 21:26:00
301
1
原创 简易扫雷游戏的制作
在布置10个雷的过程中,我们需要考虑在9*9的棋盘中随机生成10个字符’1‘,这时我们会想到rand函数和srand(用来初始化随机数的种子的)加time(时间戳)这一套组合牌来实现。排查雷的函数的形参设置为再mine数组中排查雷,然后将排查的信息传到show数组中,在9*9的棋盘中进行排查。排查雷就是判断mine[x][y]这个下标位置处是否是’1‘,如果是,就被雷炸死了,如果不是,计算周围8个位置雷的信息,将周围8个位置的字符加起来-’0‘*8的结果是一个数字,再加上’0‘就变成了字符数字。
2024-12-08 19:00:45
467
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅