简说Qt信号和槽

目录

信号和槽是什么

Qt中的connect

使用信号和槽的前提

信号和槽关联的两种方式

自定义信号和自定义槽

​编辑

触发自定义信号

[disconnect 断开信号和槽的连接](#disconnect 断开信号和槽的连接)


信号和槽是什么

我们写的 GUI程序,就是为了让用户操作的,就是要和用户进行交互,这个过程中,就需要关注用户的具体操作是什么?

说到信号,信号源,信号类型,信号的处理方式,与Linux中的信号异曲同工之妙,

槽,本质上就是回调函数,比如C语言中的qsort函数,STL中的仿函数,lambda函数,信号处理函数,线程入口函数,epoll的基于回调的机制。

Qt中的connect

Qt中的connect和网络中的connect没有任何关系,Qt中的connect是用来实现信号和槽之前的多对多关系。

使用信号和槽的前提

如果某个类想要使用信号或者槽,就必须要在类的最开始引入Q_OBJECT这个宏。

信号和槽关联的两种方式

connect(哪个空间发出的信号,啥信号,谁处理这个信号,处理方式是什么);

ui界面右键控件,转到槽:

第二种方式,qmake生成的ui_weight.h中,有下面这个方法,他的作用是启用用名称连接信号和槽

复制代码
QMetaObject::connectSlotsByName(Widget);
复制代码

自定义信号和自定义槽

public slots:

public signals:

自定义槽函数可以使用lambda函数。

触发自定义信号

通过emit关键字手动触发信号

disconnect 断开信号和槽的连接

connect()两个可以让同一个信号被两个槽函数执行

相关推荐
郑州光合科技余经理21 小时前
同城系统海外版:一站式多语种O2O系统源码
java·开发语言·git·mysql·uni-app·go·phpstorm
一只乔哇噻21 小时前
java后端工程师+AI大模型开发进修ing(研一版‖day60)
java·开发语言·人工智能·学习·语言模型
LNN202221 小时前
Linuxfb+Qt 输入设备踩坑记:解决 “节点存在却无法读取“ 问题
开发语言·qt
qq_401700411 天前
Qt单实例程序-----禁止程序多开
qt
foxsen_xia1 天前
go(基础06)——结构体取代类
开发语言·算法·golang
巨人张1 天前
C++火柴人跑酷
开发语言·c++
ID_180079054731 天前
基于 Python 的 Cdiscount 商品详情 API 调用与 JSON 核心字段解析(含多规格 SKU 提取)
开发语言·python·json
悟能不能悟1 天前
Caused by: java.sql.SQLException: ORA-28000: the account is locked怎么处理
java·开发语言
亦是远方1 天前
南京邮电大学使用计算机求解问题实验一(C语言简单编程练习)
c语言·开发语言·实验报告·南京邮电大学
社会零时工1 天前
NVIDIA Jetson开发板使用记录——开发环境搭建
qt·opencv·nvidia