1. 发送信号
在发送的头文件中标明需要发送的信号
Q_OBJECT //必须使用宏Q_OBJECT
signals: //使用signals声明信号函数,访问级别为protected
void testSignal(int v); //信号只能声明不能定义
在源文件中,函数内部可以通过 emit
来发送这个信号
emit testSignal(i); //通过emit关键字发射信号
2. 接收信号的槽
在接收头文件中标明槽函数
Q_OBJECT
protected slots:
void mySlot(int v)
{
qDebug() << "Value: " << v;
}
3. 绑定信号和槽
在类似于 mainwindow 这样的上层文件中,需要拿到包含信号的实例和包含槽的实例,然后把信号和对应的槽通过 connect
绑定在一起。
TestSignal t;
RxClass r;
//信号函数与槽函数需要一致,并且不出现参数名
QObject::connect(&t, SIGNAL(testSignal(int)), &r, SLOT(mySlot(int)));
参考: https://blog.csdn.net/small_prince_/article/details/96106202