- 博客(128)
- 收藏
- 关注
原创 14. 布局与常用控件
在搭建Qt窗口界面的时候,在一个项目中很多窗口,或者是窗口中的某个模块会被经常性的重复使用。一般遇到这种情况我们都会将这个窗口或者模块拿出来做成一个独立的窗口类,以备以后重复使用。在使用Qt的ui文件搭建界面的时候,工具栏栏中只为我们提供了标准的窗口控件,如果我们想使用自定义控件怎么办?例如:我们从QWidget派生出一个类SmallWidget,实现了一个自定窗口,Q_OBJECTpublic:signals:private:// 创建布局对象// 将控件添加到布局中。
2026-01-05 15:35:22
506
原创 13. Qt 模态 / 非模态
模态 = 阻塞事件不能操作其他窗口当前对话框会“独占”输入事件Qt是事件驱动的框架,所有的界面刷新、鼠标点击、按键输入、定时器、信号槽的队列调用,都依赖「事件循环」工作。事件循环的伪代码逻辑是一个无限for/while循环// 事件循环的极简伪代码while (窗口未关闭 && 未调用退出) {从事件队列中取出事件;// 比如点击、刷新、定时器事件分发事件并处理;// 执行对应的槽函数、界面更新处理空闲事件;// 界面重绘等return 退出码;
2026-01-05 01:18:13
532
原创 12. QDialog对话框
我们只能使用简单的几种形式。在本节中,我们将尝试编写一个简单的文本文件编辑器,我们将使用QFileDialog来打开一个文本文件,并将修改过的文件保存到硬盘。Qt 中使用QDialog类实现对话框,但是声明一个QDilaog对象的时候,不管这个对话框对象跟哪个窗口建立了父子关系,当他显示出来的时候都还是一个顶层的窗口。按照我们的写法,应该很容易的看出,这是一个模态对话框,因此我们可以直接获取其返回值。当该种模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中其他的窗口。
2026-01-04 23:29:43
493
原创 11. QMainWindow
默认情况下QMainWindow项目一创建就自带了菜单栏,可以在对象树窗口中,右键菜单栏对象,移除菜单栏:删除后也可以创建菜单栏,此时在对象树中右键MainWindow对象,菜单里边会多了创建菜单栏的功能。
2026-01-04 01:45:10
931
原创 10. emit 背后发生了什么(信号如何“广播”)
Qt的信号槽机制,是基于「QObject + Q_OBJECT + MOC元对象编译器」构建的一套完整的事件通知体系Q_OBJECT是开关,开启元对象系统;MOC自动生成信号的实现、元对象信息;emit是语义标记,信号发射的逻辑在MOC生成的函数体中;Qt通过元对象的字符串/函数签名找到槽;Auto连接根据线程归属自动选直连/队列连;跨线程靠事件循环+队列投递实现线程安全;信号不需要实现,因为是MOC的工作+纯通知接口。
2026-01-02 15:30:52
559
原创 8. 信号和槽机制
Qt框架默认提供的标准信号和槽不足以完成我们日常应用开发的需求,比如说点击某个按钮让另一个按钮的文字改变,这时候标准信号和槽就没有提供这样的函数。但是Qt信号和槽机制提供了允许我们自己设计自己的信号和槽。1)声明在类的signals域下2)没有返回值,void类型的函数3)只有函数声明,没有定义4)可以有参数,可以重载5)通过emit关键字来触发信号,形式:emit object->sig(参数);
2026-01-02 01:44:16
894
原创 7. 简单理解信号和槽
信号和槽就是一种通知机制:当某个对象发生了某件事情时(信号),就自动去调用另一个对象的函数(槽)做事情。“自定义信号为什么只需要声明(define),不需要像普通函数那样实现?这是所有学 Qt 的新人都会困惑的点。我现在用最清楚、最透彻、最底层但又能理解的方式讲给你。
2025-12-09 19:00:17
686
原创 14. 某马数据结构整理(2)
队列操作作用入队(EnQueue)缓存当前节点的子节点,保证下一层节点按“从左到右”的顺序等待处理。出队(DeQueue)取出当前层的待处理节点,完成“叶子节点判断”和“子节点入队”的逻辑。判空(QueueIsEmpty)作为层序遍历的终止条件:队列为空 → 所有节点已处理完毕。简言之,队列是层序遍历的“核心工具”,没有它就无法实现规范的层序遍历,也就无法用非递归的方式按层级统计叶子节点。版本核心实现显式数据结构适用场景不用栈/队列(递归)函数调用栈(隐)无。
2025-12-01 02:15:37
944
原创 13. 某马数据结构整理(1)
数据结构只是静态的描述了数据元素之间的关系,高效的程序需要在数据结构的基础上设计和选择算法。当然,如果这个问题让高斯来去做,他可能会写如下代码:很显然,不论是从人类还是计算机的角度来看,上面的算法效率会高出很多,这就是一个好的算法会让你的程序更加的高效。算法具有五个基本的特性:输入、输出、有穷性、确定性和可行性输入输出:算法具有零个或多个输入、至少有一个或多个输出。有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。确定性:算法的每一步骤都有确定的含义,
2025-11-30 23:41:54
1216
原创 9. 联想Yoga14s 进入u盘启动
有点无语 以前进入bios的按键方式失效了 不知道是不是更新的原因。摸索了下 找到别的方法进入u盘启动 设置->恢复->高级启动 点击后重启。重启界面没拍照 我选的第二个 什么 CD/ROM 启动那个 好像是。自己试一下 这个不行就换另一个。
2025-11-30 10:10:31
174
原创 8. win11下 下载 使用MinGW-w64
换了台电脑写代码 重新去下载MinGW-w64 发现网上那些教程大多不能用了 自己找了下 简单记录最关键的地址:https://winlibs.com/#download-releaseVSCode 本身不自带编译器,需先安装 MinGW-w64(提供 GCC 编译器)
2025-11-28 04:35:51
697
原创 6. 创建Qt Widgets Application时 QMainWindow、QWidget、QDialog三个基类的区别
场景需求选哪个基类做应用的主界面(有菜单/工具栏)做弹窗/交互对话框(如设置窗口)QDialog做简单窗口/自定义控件QWidget和QDialog特性 / 类名QWidgetQDialog核心定位所有用户界面元素的基类,通用容器应用程序的主窗口用于短期交互的对话框预设结构无任何预设组件,空白画布自带菜单栏、工具栏、状态栏、中心部件无菜单栏/工具栏,通常有按钮盒适用场景1. 简单独立窗口;2. 自定义控件基类;3. 作为其他容器的子控件1. 应用主界面(如编辑器、浏览器);
2025-11-26 07:15:04
823
原创 4. 两台win11 笔记本局域网内文件传输
如果你想最快搞定✔ 用共享文件夹✔ B 输入✔ 马上传文件如果你怕权限麻烦:✔ 装 LocalSend,直接拖拽传文件✔ 无脑成功率高。
2025-11-25 07:25:10
510
原创 5. QT之Q_OBJECT详解
宏中出现 public/private 是为了在类内部插入需要的访问控制和成员;宏在类体中展开,因此写 public/private 完全合法,而 Q_OBJECT 就是 Qt 用来自动生成元对象系统代码的核心宏。不加;它的本质是编译期断言(,语法上不需要分号;宏的设计目标是“嵌入后不破坏后续代码结构”,因此避免多余的分号;对比之前的Q_OBJECT宏成员(如),那些是类成员声明,必须加;结尾,而是检查指令,不需要分号。分号只用于“需要结束的语句/声明”,而编译期检查宏本身不需要这个结尾。
2025-11-25 05:36:46
107
原创 1. Qt-的安装和环境变量的配置
它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。能看到版本信息说明配置成功了, 如果没有对应的信息输出, 重启CMD电脑环境变量设置就可以生效了.在当前电脑的任何位置都可以打开编译出的qt可执行程序, 否则会提示找不到相关动态库找不到的错误.下载地址: http://download.qt.io/archive/qt/添加到系统的环境变量中即可.
2025-11-23 21:41:26
97
原创 3. Qt按钮小程序(5.6.0)
以qt5.6.0版本为例qt下载:链接: https://pan.baidu.com/s/1niTJwbqUqvnKMrL3V-FsOQ?pwd=22ss 提取码: 22ss。
2025-11-23 13:11:20
1170
原创 2. 创建Qt项目(5.6.0)
以qt5.6.0版本为例qt下载:链接: https://pan.baidu.com/s/1niTJwbqUqvnKMrL3V-FsOQ?pwd=22ss 提取码: 22ss。
2025-11-23 04:34:17
797
原创 4. 模拟集成电路之神-NE555
NE555 从设计到如今已经过去了近 50 年,专利早已过期,无版权保护,任何企业或个人都可以基于 NE555 原理生产此芯片。NE555是一种集成电路,也被称为555计时器,它广泛应用于模拟电路中。NE555是模拟电路中神一般的存在,可以不夸张的说掌握了NE555,就学会了模拟电路。NE555起源于上个世纪70年代,由美国国家半导体公司发明,到现在还是非常流行。NE555 被称之为神之芯片,就在于其应用太过于广泛了,很多电路设计中都有它。它是一种通用、可靠、经济实惠的电路元件,可用于各种模拟电路设计。
2025-11-23 02:20:08
45
原创 3. PCB的设计与生产
嘉立创立创EDA: 立创EDA(EasyEDA)是一种基于Web的免费,全国产EDA软件,立创EDA的界面简洁易用,同时具有丰富的元件库和库管理功能,用户可以快速地在库中搜索和选择元件,也可以添加自定义元件到库中。在20世纪40年代初,美国的一位工程师发明了一种新的电路连接方式,他将导线印刷在一块板上,这就是PCB的雏形。PCB制作工厂收到PCB设计公司的CAD文件,由于每个CAD软件都有自己独特的文件格式,所以PCB工厂会转化为一个统一的格式Gerber。现代PCB板都是多层的,一般包含如下几层。
2025-11-22 15:26:44
41
原创 2. 常见元器件
集成电路无非就是各种元器件搭积木我们要读懂电路,理解电路,需要对电路中的电子元器件有深刻的认识。理解基本原理和功能常见的元器件如电阻、电容、电感、二极管、晶体管等是电路设计中最基础、最常用的元器件,学习它们的工作原理和特性可以帮助我们深入理解电路的基本原理和设计方法熟悉型号,特性和参数同种类别的元器件也会存在不同的型号和规格,根据业务选用合适的元器件,避免不兼容和不适用的情况。
2025-11-21 21:03:41
46
原创 2.C++类型转换
类型转换(cast)是将一种数据类型转换成另一种数据类型。例如,如果将一个整型值赋给一个浮点类型的变量,编译器会暗地里将其转换成浮点类型。转换是非常有用的,但是它也会带来一些问题,比如在转换指针时,我们很可能将其转换成一个比它更大的类型,但这可能会破坏其他的数据。应该小心类型转换,因为转换也就相当于对编译器说:忘记类型检查,把它看做其他的类型。-一般情况下,尽量少的去使用类型转换,除非用来解决非常特殊的问题。标准c++提供了一个显示的转换的语法,来替代旧的C风格的类型转换。
2025-11-20 03:20:20
121
原创 1. C++模板
/交换int数据a = b;b = temp;//交换char数据a = b;b = temp;//问题:如果我要交换double类型数据,那么还需要些一个double类型数据交换的函数//繁琐,写的函数越多,当交换逻辑发生变化的时候,所有的函数都需要修改,无形当中增加了代码的维护难度//如果能把类型作为参数传递进来就好了,传递int就是Int类型交换,传递char就是char类型交换//我们有一种技术,可以实现类型的参数化---函数模板。
2025-11-19 02:23:45
536
原创 2. STL三大组件
迭代器的设计思维是STL的关键所在,STL的中心思想在于将数据容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们撮合在一起。从技术角度来看,容器和算法的泛型化并不困难,c++的class template和function template可分别达到目标,如果设计出两这个之间的良好的胶着剂,才是大难题。广义而言,我们所编写的每个程序都是一个算法,其中的每个函数也都是一个算法,毕竟它们都是用来解决或大或小的逻辑问题或数学问题。算法,问题之解法也。
2025-11-18 13:52:25
439
原创 1. STL概论
STL提供了六大组件,彼此之间可以组合套用,这六大组件分别是:容器、算法、迭代器、仿函数、适配器、空间配置器。容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。算法:各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function tempalte.
2025-11-18 02:50:04
658
原创 1. C语言项目 贪吃蛇(1)
本指南将帮助您从零开始理解贪吃蛇游戏代码,无论您是C语言初学者还是有一定编程基础,都能通过本指南掌握这份代码的核心知识。60// 游戏区域宽度20# define WIDE 60 // 游戏区域宽度 # define HIGH 20 // 游戏区域高度学习要点宏定义在编译时会被替换成实际值修改这些值可以改变游戏区域大小练习任务尝试将WIDE改为40,HIGH改为15,看看游戏界面有什么变化int x;// x坐标int y;// y坐标}BODY;学习要点struct定义了一种新的数据类型。
2025-11-16 17:05:02
969
原创 12. C语言高级编程-内存管理(2)
register的核心作用是向编译器建议将变量存储在寄存器中,以加速频繁访问的变量。受限于寄存器数量和特性,它有严格的使用限制(如不可取地址、仅适用于小类型)。现代编译器通常能自动优化变量存储,显式使用register的必要性已降低,但理解其原理有助于掌握程序性能优化的基本思路。类型作用域生命周期auto 变量一对{}内当前函数static 局部变量一对{}内整个程序运行期extern 变量整个程序整个程序运行期static 全局变量当前文件整个程序运行期。
2025-11-15 22:02:26
1025
原创 2. YOLOv5 搭建一个完整的目标检测系统核心步骤
首先,你需要一个能运行 YOLOv5 的计算机环境。推荐使用带有 NVIDIA 显卡的电脑,因为训练过程非常依赖 GPU 进行加速。在 YOLOv5 目录下,运行以下命令。如果能成功下载预训练权重并在屏幕上显示检测结果,说明你的环境配置成功了。按照以上步骤,你就可以成功地使用 YOLOv5 训练出一个属于你自己的物体识别模型了。你需要为你的特定任务准备图像数据并进行标注。模型第一次训练的结果可能并不完美。打开后,你就能看到你的模型在新数据上的识别效果了!在开始训练前,你需要修改两个关键的配置文件。
2025-11-15 12:46:00
608
原创 3. C51版本Keil环境搭建
以管理员身份打开下载好的 keil软件查看CID,用于购买证书将从代理商那里购买到的官方证书输入,点击添加添加完成后,激活时效显示如下,说明成功。
2025-11-14 13:44:46
236
原创 48. LINUX网络编程(4)
若业务并发低但要求强隔离,选多进程UDP服务器;若业务高并发且能接受线程共享资源的复杂度,选多线程UDP服务器。两者均通过“一请求一执行单元(进程/线程)”的方式实现UDP并发,充分利用了UDP“无连接、数据报独立”的特性。
2025-11-14 00:50:42
605
原创 47. LINUX网络编程(3)
网络编程常用函数socket() 创建套接字bind() 绑定本机地址和端口connect() 建立连接listen() 设置监听端口accept() 接受TCP连接recv(), read(), recvfrom() 数据接收send(), write(), sendto() 数据发送close(), shutdown() 关闭套接字在网络通信中:⚙️ 四、每个函数的作用详解1️⃣ socket() — 创建套接字作用:创建一个通信端点(“电话机”)。返回值:成功返回一个 s
2025-11-14 00:26:09
1006
原创 46. 嵌入式 Linux 环境下网络编程部分实战
以下是 嵌入式Linux环境下 与 配套实战代码,包含 IPv4/IPv6 双场景的 IP 转换、Socket 地址绑定、数据收发基础流程,代码可直接编译运行,适配嵌入式 Linux(如 ARM、x86 架构)。二、核心流程解析(嵌入式重点关注)1. 双栈 Socket 创建用 创建 IPv6 Socket,通过 开启双栈模式,让 Socket 同时监听 IPv4 和 IPv6 连接(嵌入式 Linux 内核需开启 配置)。若仅需 IPv4,可将地址族改为 ,IP 字符串用 (通配地址)
2025-11-13 03:10:45
684
原创 45. LINUX网络编程(2)
类比面向连接 (TCP)无连接 (UDP/IPX)日常比喻打电话 📞发短信 📩连接状态先建立连接再通信直接发消息是否确认每条消息都确认不确认可靠性高低速度稍慢很快应用举例文件下载、网页语音聊天、视频直播“面向连接”和“无连接”描述的是数据传输是否需要建立通信状态和确认机制。TCP/IP:面向连接、可靠传输。UDP / IPX:无连接、快速传输。Socket(套接字)”其实就是:程序之间(通常是两台电脑之间)通信的一个“接口”。一根可以传输数据的“管道。
2025-11-13 02:57:13
559
原创 44. 网络编程基础
接口”这个词本意是:两个系统之间进行交互(交流、沟通)的边界。你家电视的遥控器就是一个接口:你按按钮(输入),电视机响应(输出)。USB 接口让键盘、U盘与电脑通信。软件系统也一样,不同的程序模块之间要交流,就需要一个接口。供程序员使用的一组函数、方法、命令、或通信规则,用于与某个软件系统、硬件设备或模块进行交互。能做什么(功能)怎么做(调用方式)输入输出是什么(参数和返回值)不需要关心内部细节(黑盒思想)编程接口是程序与程序之间交流的“约定”,定义了怎么用,而隐藏了怎么做。
2025-11-13 01:24:54
822
原创 43. LINUX网络编程(1)
网络互联促成了TCP/IP协议的产生从此,TCP/IP协议诞生1983年ARPAnet上停止使用NCP,互联网上的主机全部使用TCP/IP协议。TCP/IP协议成为Internet中的“世界语”
2025-11-12 20:58:06
1143
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅