1 QT概述
1.1Qt是一个跨平台的C++图形用户界面应用程序框架
1.2发展史: 1991 奇趣科技
1.3 Qt版本: 商业版 开源版
1.4优点
1.4.1 跨平台
1.4.2 接口简单,容易上手
1.4.3 一定程度上简化了内存回放
1.4.4 市场份额良好
1.4.5 可以支持嵌入式开发
1.5 成功案例
1.5.1 Linux 桌面环境
1.5.2 谷歌地图
1.5.3 WPS
1.5.4 Skype网络电话
1.5.5 屏幕共享软件
2 创建Qt第一个项目
2.1 点击创建
2.2 项目名称 不能有中文 不能有空格
2.3 项目路径 不能有中文路径
2.4 第一个窗口类起名字
2.4.1 默认的三个基类
2.4.2 QWidget
2.4.3 QMainWindow
2.4.4 QDialog
2.5 默认创建的文件
2.5.1 .pro 工程文件
2.5.2 main.cpp 入口函数
2.5.3 MyWidget.h
2.5.4 Mywidget.cpp
3.默认生成代码
3.1 .pro
3.1.1 Qt=Qt+core gui 默认包含模块
3.1.2 大于4版本 加了模块 widget
3.1.3 Target 生成.exe应用程序名称
3.1.4 Template app 应用程序模块
3.1.5 Source 源文件
3.1.6 Header 头文件
3.2 main函数
3.2.1 QApplication a 应用程序对象,在Qt中有且仅有一个
3.2.2 MyWidget w 创建自定义窗口对象
3.2.3 w.show() 通过show显示窗口
3.2.4 return a.exec() 进入消息循坏,让程序阻塞到当前行
4.基本控件接口
4.1按钮 QPushButton *btn=new QPushButton
4.2 Btn->setParent(this) 设置父窗口
4.3显示文本 btn->setText(“aaa”)
4.4移动 btn->move(x,y)
4.5窗口大小 resize(宽,高)
4.6设置固定大小 setFixedSize(宽,高)
4.7设置窗口标题 setWindowTitle(标题的名称)
5 对象树
5.1在创建对象时候,如果父类是QObject 或者QObject的派生类,这个对象可以不用去管理释放,会放入到一个对象树上,析构会自动管理对象的释放,
5.2 构造的顺序和析构的顺序相反
6 Qt的坐标系
6.1 //Qt坐标系
6.2 左上角是0,0点
6.3 x→为正方向,y↓为正方向
7 QT信号和槽
7.1 需求:点击按钮关闭窗口
7.2 利用connect进行连接
7.3 参数1 信号的发送者 参数2 发送信号 参数3 信号的接收者 参数4 处理槽函数
7.4 connect(mybtn,&MyPushButton::clicked,this, &MyWidget::close);
7.5 信号槽优点:松散耦合,将不相关的两个内容连接到一起
8 自定义信号和槽
8.1需求:
8.1.1 Teacher类 Student类
8.1.2 ClassIsOver 下课,老师发送自定义信号,饿了
8.1.3 学术 响应饿了的信号,并且 请老师吃饭
8.2 自定义信号写法:
8.2.1写到signals 下
8.2.2 返回值是void
8.2.3 只需要声明,不需要实现
8.2.4 可以发生重载
8.3 自定义槽函数
8.3.1 public或者public slot 或者全局函数,或者lambda表达式
8.3.2 返回值 也是void
8.3.3 需要声明,也需要实现
8.3.4 可以发生重载
8.3.5 QString 转为char * .toUtf8转 QByteArray 再.data()转char *
8.4触发自定义信号 emit 自定义信号
8.5 当自定义信号和槽发生重载之后,需要利用函数指针,明确指出函数地址
8.6 拓展
8.6.1信号可以连接信号
8.6.2多个信号可以连接多个槽函数
8.6.3多个信号可以连接同一个槽函数
8.6.4信号和槽得参数类型,必须一一对应
8.6.5信号的参数个数可以比槽函数的个数要对,但是类型必须一一对应
8.6.6信号和槽是可以断开连接 disconnect
8.7 Qt4版本的信号和槽写法
8.7.1 优点:参数直观
8.7.2 缺点:参数类型不做检测
8.7.3 connect(zt,SIGNAL(hungry(QString)),st,SLOT(treat(QString)));
9 Lambda表达式
9.1 常用使用: ={}
9.2 加上 mutable修师符后,可以修改按值传递进来的拷贝(注意是能修改拷贝,而不说值本身)
9.3 返回值 n=->int {return 10000;}();
10.CONFIG += c++11 Qt 4版本前的低版本使用Lambda表达式必须要加入的一行配置信息