QT+lambda 表达式
#include "mainwidget.h" #include <QPushButton> #include <QDebug>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{ // QPushButton btn1;
// QPushButton btn2; btn1.setParent(this);
btn1.setText("colse");
btn1.move(,); btn2 = new QPushButton(this);//指针没有空间,是需要动态的对其进行空间的分配
btn2 ->setParent(this);
btn2 ->setText(" 3 2 1 "); connect(&btn1,&QPushButton::pressed,this ,&MainWidget::close); /* 对connect的说明:
* &btn1 :信号发出着,指针类型
* &QPushButton::pressed:处理信号, &发送者的类名::信号名字
* this:信号接收者
* &MainWidget::close: 槽函数,信号处理函数 &接收者的类名::槽函数名字
*/ /*自定义槽,说的更加通俗一点,就是普通函数的用法
* QT5:可以是 任意的成员函数(常用这种方法,直接写成该类的成员函数),普通全局函数,静态函数 都可以是槽函数
* 槽函数需要和信号一致(参数,返回值)
* 由于信号都是没有返回值,所以,槽函数一定没有返回值
*/
//释放按钮btn2实现里面的文本内容发生改变
connect(btn2,&QPushButton::released,this,&MainWidget::mySlot);//在写自定义信号槽函数的时候,一定要看发送信号函数的类型,这里released信号的函数是:void QAbstractButton::released()
//即released函数没有参数,也没有返回值,槽函数需要和信号一致,也没有参数和返回值 //释放按钮btn2隐藏按钮btn1
connect(btn2,&QPushButton::released,&btn1,&QPushButton::hide); //互相切换窗口的小游戏
this->setFixedSize(,);
this ->setWindowTitle("苍老师");
btn3.setParent(this);
btn3.setText("换到波老师");
btn3.move(,); //显示子窗口
// w.show(); //点击按钮btn3实现主窗口隐藏,子窗口显示
connect(&btn3,&QPushButton::released,this,&MainWidget::changeWin); //处理子窗口发送过来的信号
void (SubWidget::*funSognal)() = &SubWidget::mySignal;
connect(&w,funSognal,this,&MainWidget::dealWin);
//处理子窗口发送过来的信号(有参数)
void (SubWidget::*testSognal)(int ,QString) = &SubWidget::mySignal;
connect(&w,testSognal,this,&MainWidget::subSlot); //Lambda表达式,匿名函数对象
//C++11新增的新特性, 项目文件添加:CONFIG +=C++11
//QT配合信号一起使用, 非常的方便 QPushButton *btn6 = new QPushButton(this);//这里就不能使用普通的变量,而要使用指针变量,不然是局部变量会释放
btn6->setText("lambda表达式");
btn6->move(,);
int a= ,b=;
//这里的的=的意思是:把外部所有的局部变量、类中所有成员以值传递方式传递进来,唯一不足的是其传递进来的值以只读的方式进来
//this:类中所有成员以值传递方式传递进来
//&:把外部所有的局部变量 引用符号(慎用:在有类似动态创建空间的时候,值容易被破坏)
//如果在大括号内部想对传递进来的值进行修改,需要在()后添加mutable关键字
connect(btn6,&QPushButton::released,[=]()mutable { qDebug()<<"";
qDebug()<<a<<b;
a=;
});
//当使用有参数的信号函数时,例如使用clicked; connect(btn6,&QPushButton::clicked,[=](bool isChecked) { qDebug()<<isChecked; }); } //自定义槽函数的实现
void MainWidget::mySlot()
{
btn2->setText("I LOVE YOU");
} void MainWidget::changeWin()
{
//子窗口显示,
w.show();
//本窗口隐藏
this ->hide(); }
void MainWidget::dealWin()
{
//子窗口隐藏
w.hide();
//本窗口显示
this->show();
} void MainWidget::subSlot(int a,QString str)
{
qDebug()<<a<<str;
}
MainWidget::~MainWidget()
{ }
QT+lambda 表达式的更多相关文章
- Qt 5 最新信号和槽连接方式以及Lambda表达式
最近学习Qt,发现新大陆,这里做下记录. 主要内容就是原始Qt4的信号槽连接方式,以及Qt5新版的连接方式,还有件事简单演示一下lambda表达式的使用方式 代码如下 /* * 作者:张建伟 * 时间 ...
- Qt 使用 lambda 表达式做为槽函数时为什么使用 QObject::sender() 获取到的发送信号对象指针为空?
/*! Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; ...
- QT_5_ Qt中信号和槽 + 自定义信号和槽 + lambda 表达式
1.Qt中信号和槽 1.1 需求:点击按钮关闭窗口 1.2 利用connect进行链接 1.3 参数1 信号发送者(指针) 参数2 发送的信号(信号地址) 参数3 信号的接受者(指针) 参数4 处理槽 ...
- Qt:lambda表达式
说明 c11之后加入了lambda表达式,所以Qt也支持 加载项 CONFIG += c++11 用法 [ capture ] ( parameters ) mutable -> return_ ...
- Qt中使用匿名函数lambda表达式
一.为什么要使用匿名函数lamdba 首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元.如代码: #include <QCoreApplica ...
- Qt5中使用lambda表达式
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...
- Qt5中的lambda表达式和使用lambda来写connect
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 例子: QString program = "C:/Windows/Syst ...
- C++11之lambda表达式应用
应用 foreach语句中 #include <time.h> #include <algorithm> using namespace std; void func(int ...
- java8-01-初识Lambda表达式
为什么用 Lambda表达式 在java8之前 java语言 方法调用 无法将函数作为一个参数 也无法声明返回一个函数 对比 javaScript是典 ...
随机推荐
- CSS中style用法详解
转自:http://www.cnblogs.com/xingxingchongchong/p/6501575.html css样式表按其所在位置分三种: 1.内嵌样式表 2.内部样式表 3.外部样式表 ...
- 51nod 1247 可能的路径(gcd)
传送门 题意 略 分析 有以下结论 \(1.(x,y)->(y,x)\) \(2.(x,y)->(a,b)==>(a,b)->(x,y)\) 证明 做如下变换 \((a,b)- ...
- 51nod 1272【二分+RMQ】
思路: 这题不能说是长见识,倒是第一次写这么富有套路的题,倒着来,二分区间嘛,这个很简单啊,二分的条件查询一个当前区间的最小值是不是比那个特定的值小,一步步缩小,这就是二分嘛,然后查询用线段树的RMQ ...
- NGUI Tween几种用法随手记
需要明确下几种动画的用法 play begin EventDelegate.add TweenPlayer ---------------------------------------------- ...
- 纯JS实现元素加速运动的函数封装
//elem:给哪个元素添加位移:direction:是垂直方向的话就传入top,水平方向left:speed控制速度,向下.向右传入正值,反之传入负值:distance表示位移的距离function ...
- 鸟哥私房菜基础篇:Linux是什么习题
猫宁!!! 参考链接:http://cn.linux.vbird.org/linux_basic/0110whatislinux.php#ex 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-你在你的 ...
- Selenium | 基础入门 | 截屏并保存于本地
可先参考 Selenium | 基础入门 | 利用Xpath寻找用户框 核心代码: //截屏操作 File srcFile = ((TakesScreenshot)driver).getScree ...
- 1-13Object类之toString方法
Object中的toString方法 SUN在Object类中设计toString方法的目的:返回java对象的字符串表示形式. 在现实的开发过程中,Object中的toString方法就是要被重写的 ...
- h5-23-百度地图api
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Python Unicode and str
http://stackoverflow.com/questions/18034272/python-str-vs-unicode-types unicode is a character set. ...