19信号和槽_信号和槽的基本概念

①Linux 信号 Signal

是系统内部的通知机制.

是进程间通信的方式

(给进程发信号kill命令,像情景内存泄漏,管道一端关闭另一端还是读,会给进程发信号)

②信号三要素
信号源 : 谁发的信号
信号的类型 : 哪种类别的信号
信号的处理方式: 注册信号处理函数,在信号被触发的时候自动调用执行

③Qt 中的信号和 Linux 中的信号,虽然不是一样的概念,但是确实有相似之处

④Qt 中,谈到信号,也是涉及到三个要素
信号源: 由哪个控件发出的信号
信号的类型 : 用户进行不同的操作,就可能触发不同的信号.

点击按钮。触发点击信号.

在输入框中移动光标,触发移动光标的信号

勾选一个复选框

选择一个下拉框 都会触发出不同的信号

咱们写的 GUI 程序就是要让用户进行操作,就是要和用户进行交互

这个过程中就需要关注,用户当前的操作具体是个什么样的操作.
信号的处理方式: 槽(slot) => 函数

Qt 中可以使用 connect 这样的函数,把 一个信号和一个槽 关联起来

后续只要信号触发了,Qt 就会自动的执行槽函数.

所谓的槽函数"本质上也是一种"回调函数"(callback)

⑤类似"回调函数"思想

最早 C 语言阶段

  1. 函数指针

  2. 实现转移表,降低代码的"圈复杂度"

  3. 实现回调函数效果 => qsort

后来在 C++ 阶段~

  1. STL 中,函数对象/仿函数.(仿函数本质是一个 重载了 operator() 的类或结构体, 因此可以像函数一样被调用。)

  2. lambda 表达式(其中捕捉机制还能简化代码写法)

后来在 Linux 中~~

  1. 信号处理函数

  2. 线程的入口函数

  3. epoll 基于回调的机制

⑥上述操作过程中,都是提前把不同的信号的处理方式,准备好了~~

定是先把信号的处理方式准备好,再触发信号~

Qt 中,**一定是先关联号 信号 和 槽,然后再触发这个信号.**顺序不能颇倒,否则信号就不知道如何处理了(错过了)

相关推荐
时间的拾荒人44 分钟前
Qt 界面优化:绘图详解 —— 从基础图形到图片处理
开发语言·qt·面试
MayZork1 小时前
Qt 文件操作:QSaveFile 与 QTemporaryFile(含 QTemporaryDir)实战
开发语言·qt
半杯咖啡半行码5 小时前
Qt 开发基础:版本演进、常用工具与多平台安装
开发语言·qt
qq_401700419 小时前
Qt Signal Mapper:一堆按钮,怎么共用一个槽函数
开发语言·qt
Python图像识别10 小时前
35-【2027毕设】YOLO11中草药检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计
Lhan.zzZ10 小时前
Qt/QML:业务记录单展示、签名确认与 PDF 导出开发
c++·qt·pdf
Quz21 小时前
QML 动画选择:GIF与Lottie 的区别,以及 Qt 6.8 与 6.11 的 Lottie 实现差异
qt
时间的拾荒人1 天前
Qt 界面美化实战:QSS 样式表
开发语言·qt·面试
qq_401700411 天前
Qt 串口/网口通信:Hex 与 ASCII 编码转换深度指南
开发语言·数据库·qt
Python图像识别1 天前
30-【2027毕设】YOLO11管道缺陷检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·qt·课程设计