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

相关推荐
用户805533698038 小时前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner9 小时前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz5 天前
QML Hello World 入门示例
qt
xcyxiner8 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner9 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner9 天前
DicomViewer (添加模型类)3
qt
xcyxiner10 天前
DicomViewer (目录调整) 2
qt
xcyxiner10 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00612 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术12 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript