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所在作用范围内所有可见的局部变量