Qt学习笔记(上)

Qt学习笔记(上)_第1张图片

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子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。

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

Qt学习笔记(上)_第2张图片

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 );

Qt学习笔记(上)_第3张图片

Qt学习笔记(上)_第4张图片

7. 自定义信号和槽

7.1 自定义信号

写到 signals下

返回 void

需要声明,不需要实现

可以有参数 ,可以重载

7.2 自定义槽函数

返回void

需要声明 ,也需要实现

可以有参数 ,可以重载

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

7.3 触发自定义的信号

emit 自定义信号

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

Qt学习笔记(上)_第5张图片

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 {}

你可能感兴趣的:(Qt,qt,c++)