Qt5 模块.png

1. Qt简介

1.1 跨平台图形界面引擎

1.2 历史

==1991 奇趣科技==

1.3 优点

==跨平台==

==接口简单,容易上手==

==一定程度上简化了内存回收==

1.4 版本

==商业版==

==开源版==

1.5 成功案例

==Linux桌面环境 KDE==

==谷歌地图==

==VLC多媒体播放器==

2. 创建第一个Qt程序

2.1创建过程

==点击创建项目后,选择项目路径以及给项目起名称==

==名称 - 不能有中文不能有空格==

==路径 - 不能有中文路径==

==默认创建有窗口类,myWidget,基类有三种选择: QWidget 、QMainWindow、QDialog==

2.2 main函数

==QApplication a 应用程序对象,有且仅有一个==

==myWidget w;实例化窗口对象==

==w.show()调用show函数 显示窗口==

==return a.exec() 让应用程序对象进入消息循环机制中,代码阻塞到当前行==

3. 按钮控件常用API

==创建 QPushButton * btn = new QPushButton==

==设置父亲 setParent(this)==

==设置文本 setText(“文字”)==

==设置位置 move(宽,高)==

==重新指定窗口大小 resize==

==设置窗口标题 setWindowTitle==

==设置窗口固定大小 setFixedSize==

4. 对象树

==当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。==

==一定程度上简化了内存回收机制==

01.png

5. Qt中的坐标系

==左上角为 0 , 0 点==

==x以右为正方向==

==y以下为正方向==

6. 信号和槽

==连接函数 :connect==

6.1 参数

==参数1 信号的发送者==

==参数2 发送的信号(函数地址)==

==参数3 信号的接受者==

==参数4 处理的槽函数 (函数的地址)==

6.2 松散耦合

6.3 实现 点击按钮 关闭窗口的案例

6.4 connect(btn , &QPushButton::click , this , &QWidget::close );

02.png

n1.png

7. 自定义信号和槽

7.1 自定义信号

==写到 signals下==

==返回 void==

==需要声明,不需要实现==

==可以有参数 ,可以重载==

7.2 自定义槽函数

==返回void==

==需要声明 ,也需要实现==

==可以有参数 ,可以重载==

==写到 public slot下 或者public 或者全局函数==

7.3 触发自定义的信号

==emit 自定义信号==

7.4 案例-下课后,老师触发饿了信号,学生响应信号,请客吃饭

n2.png

8 当自定义信号和槽出现重载

==需要利用函数指针 明确指向函数的地址==

==void( Teacher:: * tSignal )( QString ) = &Teacher::hungry;==

8.1 QString 转成 char *

==ToUtf8() 转为 QByteArray==

==Data() 转为 Char *==

8.2 信号可以连接信号

8.3 断开信号 disconnect

9 拓展

==信号可以连接信号==

==一个信号可以连接多个槽函数==

==多个信号可以连接同一个槽函数==

==信号和槽函数的参数 必须类型一一对应==

==信号和槽的参数个数 是不是要一致?信号的参数个数 可以多余槽函数的参数个数==

==信号槽可以断开连接 disconnect==

10 Qt4版本写法

==connect( 信号的发送者, 发送的信号SIGNAL( 信号) ,信号接受者, 槽函数SLOT(槽函数) )==

==优点 参数直观==

==缺点 编译器不会检测参数类型==

11 Lambda表达式

11.1 []标识符 匿名函数

==值传递==

==& 引用传递==

11.2 () 参数

11.3 {} 实现体

11.4 mutable 修饰 值传递变量 ,可以修改拷贝出的数据,改变不了本体

11.5 返回值 ->int {}