简说Qt信号和槽
目录
信号和槽是什么
Qt中的connect
使用信号和槽的前提
信号和槽关联的两种方式
自定义信号和自定义槽
编辑
触发自定义信号
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()两个可以让同一个信号被两个槽函数执行