简说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()两个可以让同一个信号被两个槽函数执行

相关推荐
感谢地心引力25 分钟前
【Matlab】雷达图/蛛网图
开发语言·matlab
逾非时40 分钟前
python网络爬虫的基本使用
开发语言·爬虫·python
ppdkx43 分钟前
python训练营第33天
开发语言·python
玉笥寻珍1 小时前
从零开始:Python语言进阶之异常处理
开发语言·python
Java永无止境1 小时前
JavaSE常用API之Runtime类:掌控JVM运行时环境
java·开发语言·jvm
龙湾开发1 小时前
C++ vscode配置c++开发环境
开发语言·c++·笔记·vscode·学习
步行cgn1 小时前
函数式编程思想详解
java·开发语言·windows
南瓜胖胖2 小时前
R语言科研编程-标准偏差柱状图
开发语言·r语言
编码小笨猪2 小时前
[ Qt ] | 常见控件(一): enable、geometry
开发语言·qt