信号就是单片机中的中断触发条件(如鼠标点击等事件),本质是一个函数,通过connect与槽进行绑定时传输的是函数指针。槽就是单片机中的中断函数(信号触发以后要干什么),使用connect与信号进行绑定时传输的也是函数指针。
自定义信号与槽时,槽函数接受数据和信号传输数据相同,通过emit触发信号
#include <QObject>
#include <QDebug>
class MyClass : public QObject {
Q_OBJECT
public:
MyClass(QObject *parent = nullptr) : QObject(parent) {}
signals://定义信号
void mySignal(int value);
public:
void triggerSignal() {
emit mySignal(42);//triggerSignal函数执行通过emit触发mySignal信号,并将信号输入参数42传给对应槽函数
}
};
class ReceiverClass : public QObject {
Q_OBJECT
public slots://定义槽函数
void mySlot(int value) {
qDebug() << "Received value:" << value;
}
};
int main() {
MyClass sender;
ReceiverClass receiver;
QObject::connect(&sender, &MyClass::mySignal, &receiver, &ReceiverClass::mySlot);//绑定mySignal信号触发对应槽函数mySlot
sender.triggerSignal();//执行triggerSignal触发其中emit从而触发mySignal信号,从而触发对应槽函数mySlot
return 0;
}
#include "main.moc"