背景:多个信号需要执行同一个函数或者一类函数的时候,可以选择每个信号创建一个槽函数去实现功能,如果直接关联到一个函数中,该函数只能执行一份功能,有时候并不能满足业务需求
在多个信号绑定到同一个槽函数的状态下,让槽函数根据绑定的不同的信号执行不同的功能有两种方法:
(1)在槽函数中获取到sender对象,反向解析出信号的名称,分叉执行;
(2)使用QSingalMapper类:管理多个信号,槽函数的处理相对变得简单。
具体来看:
(1)反向获取Sender名称
关键函数:
QObject::sender() // 在槽函数中获取信号
QObject::setObjectName(QString) // 给QObject对象设置名称
QObject::objectName() // 获取QObject对象名称
QObject_cast<QObject>(object) // 强转对象类型
思路如下:
示例代码如下:
typedef enum{
BUTTON_1,
BUTTON_2,
BUTTON_3,
BUTTON_4
}BUTTON;
push_button_1->setObjectName(QString::