qt connect中有Lambda表达式如何理解

时间:2022-03-24 22:14:51
像下面的这2段代码该如何理解,信号的发送者,和发送什么信号都是已知的,信号的接受者,和接收后如何处理从哪可以看出来 
connect(pWork,&Work::ImageDone, [=](QImage image){
        m_image=image;
        update();
    });

    connect(this,&MyWidget::destroyed,[=](){
        pthread->quit();
        pthread->wait();
        delete pWork;
    });

2 个解决方案

#1


m_image=image;
        update();
====================
执行这个

#2


理解是很好理解的 就是一个匿名函数           [&](){//这里面敲代码}    ,外层再套一个connect(); 。&可以函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。

#1


m_image=image;
        update();
====================
执行这个

#2


理解是很好理解的 就是一个匿名函数           [&](){//这里面敲代码}    ,外层再套一个connect(); 。&可以函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。