#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()
{
}
Qt--Lambda表达式
最新推荐文章于 2024-03-20 13:29:05 发布