信号和槽函数(signals&slots)
Qt5作为c++的GUI开发类库,其最具代表性的特点就是信号和槽,类似于中断和中断处理函数调用的回调(callback)函数,但具体实现在应用层,并且使用起来较后者更为方便。
【作用】
用于对象间的通信。实际上常用于对GUI窗体上各种事件的及时处理。
【信号关联】
在接收信号并调用槽函数的对象的类的构造函数(constructor)中,调用connect函数实现信号与槽的关联。
connect(sender, &SenderObject::signalFuncton, this, &ReceiverObject::slotsFunction);
·sender:发送信号的对象
·&SenderObject::signalFuncton:信号函数指针
·&ReceiverObject::slotsFunction:槽函数指针
1. 信号声明(在发送信号的类中):
注:信号必须是无返回值的函数。
2. 接收信号的对象的类中声明槽函数slots:
3. 在构造函数中关联信号connect
4. 发射信号:
关键字emit。可在发射对象的类中增加一个函数用于发射信号
Qt信号和槽不用connect的情况:
槽函数的命名为on_对象名_信号,则构造函数中就不用写connect了,直接写槽函数的实现就能实现信号和槽的连接。
例如:一个按钮对象名为pushButton,在写槽函数的时候按照这种规则命名,在头文件中添加:
private slots:
void on_pushButton_clicked();
可以在ui界面直接右键->跳转到槽,自动声明槽函数。