QT特征
- 面向对象,空间可重用性
- 控件之间的相互通信(signal和slot)
- 友好的联机帮助,联机参考文档
- 用户自定义控件
QtCreator:跨平台IDE
QtCreator官方下载链接: https://download.qt.io/
清华大学镜像:清华镜像
QT在线帮助文档:QT Assistant Manual
对象树
概念:QT中类的继承关系,在一定程度上简化了对象的释放
1. 继承于QObject类的,无需手动释放堆内存
2. 添加到QObject或QObject派生类的对象的子成员,无需手动释放内存
信号槽
Lamda表达式定义函数
[可访问外部变量](参数)->返回值类型{函数体}
- 值传递,不可以改变外部变量:
[=]\(参数\)->返回值类型{函数体}
- 引用传递,可以改变外部变量:
[&]\(参数\)->返回值{函数体}
或[=]\(参数\)mutable->返回值{函数体}
int num1=1, num2=2;
void (*pFun)(int&) = [](int& n)->void{
n = 3;
qDebug()<<"pFun";
};
pFun(num1);
Signal & Slot
概念:是观察者模式的一种简易方式
使用connect函数为信号与槽建立好链接,当信号广播(被触发)时,槽做出相应的处理(信号来自被观察者,槽来自观察者)
connect(被观察者,信号,观察者,槽)
connect(被观察者,信号,Lamda表达式匿名函数)
connect(被观察者,SIGNAL(信号函数),观察者,SLOT(槽函数))
- 信号(Signal):函数声明,无需实现;系统大多数类都内置了信号,开发者也可以自定义信号
- 槽(Slot):本质是一个函数,是类的成员函数,有声明且有实现体;系统大多数类也内置了槽,开发者也可以自定义槽
常用控件
- 按钮控件:QPushButton
- 文本控件:QLable
- 滑动条控件:QSlider
- 进度条控件:QProgressBar
- 文本编辑框控件:QTextEdit