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子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。
一定程度上简化了内存回收机制
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 );
7. 自定义信号和槽
7.1 自定义信号
写到 signals下
返回 void
需要声明,不需要实现
可以有参数 ,可以重载
7.2 自定义槽函数
返回void
需要声明 ,也需要实现
可以有参数 ,可以重载
写到 public slot下 或者public 或者全局函数
7.3 触发自定义的信号
emit 自定义信号
7.4 案例-下课后,老师触发饿了信号,学生响应信号,请客吃饭
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 []标识符 匿名函数
=值传递
& 引用传递