当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/107119.html

相关文章:

  • 406. 根据身高重建队列
  • Docker 构建镜像异常报错解决
  • 深入剖析Linux常用命令,助力高效操作
  • 23.6 CharGLM多模态API实战:24k上下文角色一致性优化全解析
  • cmake 中的命令
  • Java面试题总结
  • C语言 - 指针变量 + 1 的本质
  • Linux中动静态库的制作
  • AF3 OpenFoldSingleMultimerDataset类解读
  • 产品经理的大语言模型课 04 -模型应用的云、边、端模式对比
  • STM32开发板上生成PWM正弦波
  • XT1861 同步升压 DC-DC 变换器
  • Spring Boot 3.4.3 基于 JSqlParser 和 MyBatis 实现自定义数据权限
  • 【Qt】QList<T> list(n)构造函数创建列表时元素 T的默认值
  • AI写程序:视频裁剪小工具
  • 【模板】P2764 最小路径覆盖问题
  • 【Linux】ELF文件与库的加载
  • RNN模型与NLP应用——(8/9)Attention(注意力机制)
  • LeetCode每日温度
  • Zemax设计实例:手机广角镜头设计(FOV 120°)
  • 在centos7上安装ragflow
  • 第149场双周赛:找到字符串中合法的相邻数字、重新安排会议得到最多空余时间 Ⅰ、
  • 腾讯云智测试开发面经
  • javaSE————网络原理
  • 从吉卜力漫画到艺术创造:GPT-4o多种风格绘图Prompt大全
  • Redisson 操作 Redis Stream 消息队列详解及实战案例
  • HttpClient-03.入门案例-发送POST方式请求
  • Dell G16 7620克隆硬盘 扩容
  • 移远RG200U-CN模组适配问题
  • OpenCV 图形API(7)用于将笛卡尔坐标(x, y)转换为极坐标(magnitude, angle)函数cartToPolar()