QT开发第二章——信号和槽

文章目录

信号和槽概念

Qt中用户每和控件交互就是一个事件,每个事件会发送信号,比如点击按钮、关闭窗口,对信号的相应就是槽。

信号的本质

信号是用户对按钮或窗口进行操作,产生了事件,所以信号的本质就是事件,信号的呈现方式是函数,某个事件产生了,Qt会通过特定函数通知使用者。

槽的本质

槽的本质是对信号相应的函数,与信号关联,当信号触发时,自动调用槽函数

信号只需要声明(编译器会自动生成定义,元编程),槽函数需要声明定义

信号与槽使用

连接信号和槽

c 复制代码
connect (const QObject *sender, 
 const char * signal ,
 const QObject * receiver , 
 const char * method , 
 Qt::ConnectionType type = Qt::AutoConnection )

利用QT Creator生成槽代码

头文件自动生成,声明

cpp生成框架,手动添加

自定义信号和槽

老师学生上课关联

带参信号和槽

信号参数个数必须大于等于槽函数参数,但在开发过程中最好个数匹配

信号与槽对应关系

  • 信号与槽一对一
  • 信号对应槽,信号再对应一个信号,比如上面,按钮对应老师,老师对应学生
  • 多个信号对应一个槽
  • 一个信号对应多个槽,多次connect即可

信号与槽断开

disconnect函数

Lambda表达式与槽应用

信号与槽优缺点

优点:低耦合

信号无需关心连接了哪些槽,槽也不需关心关联了哪些信号,支持信号槽机制的类必须继承Object类

缺点:效率较低

与回调函数相比,效率较低,因为需要遍历所有关联,定位信号函数,但人的肉眼其实观察不出来

相关推荐
峥无8 分钟前
C++11 深度详解:现代 C++ 基石全梳理
开发语言·c++·笔记
阿米亚波18 分钟前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
小王C语言42 分钟前
【3. 基于 Vibe Coding 的 OJ 平台】. 构建仓库、环境准备、需求梳理、安装依赖
网络·c++
SomeB1oody1 小时前
【RustyML入门】1.0. 快速上手
开发语言·后端·机器学习·rust·教程
狗凯之家源码网1 小时前
短剧系统搭建实战:源码功能与商业变现效果全景展示
开发语言·php
caishenzhibiao1 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
小王C语言1 小时前
【8.进行接口测试】:通过 curl 进行接口自动化测试 / 通过 python 程序进行接口自动化测试
网络·c++
易筋紫容2 小时前
创建型模式:对象的诞生艺术
开发语言·前端·javascript
888CC++2 小时前
C++ 快速学习指南:从入门到进阶的实战路线
开发语言·c++
小小晓.2 小时前
C++记:函数
开发语言·c++·算法