Qt学习笔记(坐标系,信号,槽,lambda)

Qt中的坐标系
原点在左上角(0,0)点
横着是x轴的正向
竖着是y轴的正向
游戏里的坐标系原点在左下角
3D游戏还有Z轴

Qt中的信号和槽
在通话故事中有一个阿拉丁神的的故事,故事里有四样东西,首先有一个人,人捡了一个神灯。对神灯而言,想召唤出来东西要搓 擦。。。。它。对于灯而言,灯 冒烟。。。出来个灯神。对我们而言,里边主要的东西是人 。人擦了灯以后,灯就出来了个灯神。


需求:在做运行前项目时,点按钮没反应
点mybutton按钮  关闭窗口
可以抽离出四个东西:有一个按钮  -----> 被点击-------->窗口 ---------->进行关闭
把四个主要内容连接,连接的时候,英文单词是 connect。在代码中也是这个单词
connect()有四个参数
connect(参数1:信号的发送者,参数2:发送的信号(信号地址),参数3:信号的接收者,处理的函数(函数地址))

该函数专业而言叫槽函数
connect(按钮,点击,窗口,关闭)
四个参数进行连接

//点击我的按钮  关闭窗口
//信号关键字,signals

//clicked(bool checked=false)//有按下和弹起
//pressed()
//released()
//goggled(bool checked)布尔状态值 如灯 按下被打开了,再按,灯关闭了
//参数1 信号的发送者,参数2 发送的信号 参数3 信号的接收者, 参数4 处理的槽函数
//槽的单词是Slots,关闭函数close 有一个返回值,暂时用不上

connect(mybtn,&Mybutton::clicked,this,&MyWidget::close);
/注意:对应取地址  高版本做了优化,但是可以执行,但是建议写上&,加上&有自动提示信息
//用当前对象所属的类和他的父类都可以
//一行代码四个参数,很简单
connect(mybtn,&QPushButton::clicked,this,&QWidget::close);

信号和槽有另一个优点 : 松散耦合
对于我们的按钮  点击必须要关闭窗口吗 不是 关闭窗口必须要点击按钮才能实现吗 不是
左边的事情和右边的事情是松散的 用connect把两边的事物连接在一起

自定义的信号和槽函数

 
自定义信号函数
 //自定义信号 需要写在signals下边
 //返回类型必须是void
 //信号只需要声明,不需要实现 (重点) 声明完就暂时不用管了
 //信号可以有参数,可以重载
    
自定义槽函数 (和信号的唯一区别是 需要声明也需要实现)

//自定义槽函数的地方,比较低的版本必须写在slots下 高版本可以写到public(上边的public) 或者全局函数
//返回类型必须是void
//信号需要声明,也需要实现  在cpp文件下实现,这一点区别去信号函数,
//槽函数也可以有参数,可以发生重载

信号触发关键字 emit
当自定义信号和自定义槽出现函数重载的时候,相应的信号函数和槽函数的地址就不明确了。
所以需要一个函数指针来指向函数地址
QString 转 char*  toUtf8 转 QByteArray 类型 再利用data 转 char*

信号和槽可以断开 disconnect(,,,);

Lambda表达式  (匿名函数的形式)//创建匿名的函数对象,以简化编程工作。

C++11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。首先看一下Lambda表达式的基本构成:
[capture](parameters) mutable ->return-type
{
    statement
}
[函数对象参数](操作符重载函数参数)mutable ->返回值{函数体}

① 函数对象参数;
[],标识一个Lambda的开始,这部分必须存在,不能省略。函数对象参数是传递给编译器自动生成的函数对象类的构造函数的。函数对象参数只能使用那些到定义Lambda为止时Lambda所在作用范围内可见的局部变量(包括Lambda所在类的this)。函数对象参数有以下形式:
1.    空。没有使用任何函数对象参数。
2.    =。函数体内可以使用Lambda所在作用范围内所有可见的局部变量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值