使用如下全局函数,也可作为信号接收者的被调用函数,如下列代码所示,
void buttonClicked(){
qDebug("Clicked");
}
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
b.setText("Button");
b.setParent(this);
connect(&b,&QPushButton::clicked,buttonClicked);
}
以上代码中,connect中的buttonClicked函数,可以使用一个匿名函数代替,匿名函数的语法为
[捕获变量](参数)
{
语句
}
如下列代码,按钮b在点击后,将会控制台输出Clicked
connect(&b,&QPushButton::clicked,[](){
qDebug("Clicked");
});
若使用匿名函数编译出错,则在项目文件中加入一句
CONFIG += c++11
即可启用c++11语法支持
lambda表达式中,默认是无法访问外部变量的,需要在[]中写入待捕获的外部变量,写[=]则可以通过值传递的方式捕获到外部作用域可访问的所有变量。