Qt--Lambda表达式

#include "mainwidget.h"
#include<QPushButton>
#include<QDebug> //打印
MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{
    this->setWindowTitle(QStringLiteral("我是老板主窗口"));
    mb.setParent(this);
    mb.setText("ToSub");
    mb.move(50,50);

    //显示子窗口
    //subw.show();
    connect(&mb,&QPushButton::released,this,&MainWidget::changeWin);

    //处理子窗口的信号
    //信号具有广播的性质,子窗口发送信号,主窗口捕获之后作dealSub的处理
    void (SubWidget:: *pNoPara)()=&SubWidget::mySignal;
    connect(&sw,pNoPara,this,&MainWidget::dealSub);
    void (SubWidget:: *pHavePara)(int , QString)=&SubWidget::mySignal;
    connect(&sw,pHavePara,this,&MainWidget::dealSlot);


//    //Qt4信号连接 不建议使用 容易出错,因为把函数名转化成字符串,不进行错误检查
//    //Qt4槽函数必须有slots关键字来修饰
//    connect(&sw,SIGNAL(mySignal()),this,SLOT(dealSub()));
//    connect(&sw,SIGNAL(mySignal(int,QString)),this,SLOT(dealSlot(int,QString)));

    //Lambda表达式,匿名函数对象
    //C++11增加的新特性,项目文件:CONFIG += C++11
    //Qt配合信号一起使用,非常方便

    QPushButton *b4=new QPushButton(this);
    b4->setText("Lambda表达式");
    b4->move(50,50);
    int a=1,b=2;
    connect(b4,&QPushButton::released,
            //=:把外部所有局部变量、类中所有成员以值传递方式
            //this:类中所有成员
            //& : 外部所有局部变量
            [=]()
            {
                b4->setText("Lambda");
                qDebug()<<a<<b;
            }
    );

    resize(500,500);
}

void MainWidget::changeWin()
{
    sw.show();
    this->hide();
}

void MainWidget::dealSub()
{
    sw.hide();
    this->show();
}

void MainWidget::dealSlot(int a, QString str)
{
    qDebug()<<a<<" "<<str;
}

    MainWidget::~MainWidget()
{
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值