一、概要
1. 信号 (Signals):是由对象在特定事件发生时发出的消息。如点击等操作。
2. 槽 (Slots):是用来响应信号的方法。
3. 连接信号和槽:使用 QObject::connect() 方法将信号连接到槽。
二、信号与槽的构建方法
1)UI界面
注:此方法适用性有限,仅含有部分QT继承的基础功能,例如关闭等,如需更复杂的功能需要自己构造槽函数。
方式1:信号与槽编辑器,点击加号后,依次选择 发送者、信号、接收者、槽
方式2:界面拖动式连接
1.发送信号的组件
2.点击信号与槽
3.将鼠标移至发送者,长按鼠标拖动箭头到接收者
4、选择槽函数并确认
2)构造槽函数
1.前言——所需的操作文件
注:头文件里主要负责槽函数的声明、#include各种包等
注:widget.cpp文件里主要负责槽函数的构建
2.四种信号与槽的方法
方法一:联合UI
注:此方法无需在头文件中声明槽函数
①右键发送者转到槽
②选择信号会自动跳转到槽函数,自行编辑所需功能即可
其他方法:
//方法二 QObject::connect(sender,SIGNAL(signal()),receiver, SLOT(slot()));
QObject::connect(ui->pushButton_save,SIGNAL(click()),this,SLOT(save_btn()));
//方法三 lambda表达式 QObject::connect(sender,&Sender::signal, [=]() { /* lambda body */ });QObject::connect(ui->pushButton_save,QPushButton::clicked,[=](){
std::cout<<"保存"<<std::endl;
});//方法四 指针 QObject::connect(sender, &Sender::signal, receiver,&Receiver::slot); QObject::connect(ui>pushButton_save,&QPushButton::clicked,this,&Widget::save_btn);
三、自定义信号与槽
注:不仅要在头文件中声明槽函数还要声明信号,并通过emit触发信号
1.头函数
2) widget.cpp