面是对Qt中在QObject::connect()中的lambda表达式常用用法
QString str("I am a string!");
device=str;
connect(ui-
connect(m_imgshowUI, &ImgShow::GetImgPath, m_visionplatform, [=](const std::string filename){m_visionplatform->ReadImg(filename);});
PushButton::clicked,[&](bool){qDebug()<<"device=="<<device;});
表达式详解
a1 第一个参数含义
第一个参数ui->pushButton:表示对象;
a2 第二个参数含义
第二个参数&QPushButton::clicked:表示对象包含的信号(该信号隐藏参数,实际上在槽函数仍然可以调用信号参数列表);
a3 第三个参数含义
第三个参数:[&](bool){qDebug()<<"device=="<<device};
该connect只有三个参数,在三个参数情况下,默认第三个槽函数的对象是本类this,也就是第三个参数this被省略了。
[&]中的&:表示调用this作用域内任何参数;一般是全局变量,不能是局部变量,否则局部变量会用完销毁,调用就会出现内存错误,程序奔溃!(注意,[&]这里前面不用加&,即这种表达式&[&]是错误的)
(bool):函数参数列表,该参数列表接收了信号参数列表,也就是等于信号signal的参数列表;文章来源:https://www.toymoban.com/news/detail-759493.html
{qDebug()<<"device=="<<device}:函数体,将函数要执行的代码写在这里;
文章来源地址https://www.toymoban.com/news/detail-759493.html
到了这里,关于QT中的lambda表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!