有时我们想要将参数不匹配的信号和槽绑定在一起,这时就要用到函数闭包了
闭包类型1
std::bind
//需要两个参数的槽函数
void Widget::slotTest(QString message,int index){
QString res="";
res+=message;
res+=QString::number(index);
ui->textEdit->insertPlainText(res);
}
//无参数的点击信号
void Widget::test1(QString name, int age){
connect(ui->pushButton_3,&QPushButton::clicked,this,std::bind(&Widget::slotTest,this,name,age));
}
闭包类型2:
lambda表达式
//需要两个参数的槽函数
void Widget::slotTest(QString message,int index){
QString res="";
res+=message;
res+=QString::number(index);
ui->textEdit->insertPlainText(res);
}
void Widget::test2(){
QString name="AAA";int age=24;
//无参数的按钮点击信号
connect(ui->pushButton_3,&QPushButton::clicked,this,[=](){
slotTest(name,age);
});
}