1.QT发展史
曾被诺基亚收购
用QT编写程序,可以直接运行到不同的平台windows、Linux、mac
知名的软件—基于QT:谷歌地图、wireshark(免费的网络抓包软件,通过抓包分析可以解决开发过程中的很多问题)、virtualbox(开源虚拟机)、WPS、VLC(强大的音频播放器)
界面美观,支持QSS,类似于web的css,修改控件的样式很简单
2.QT安装
两个重要的开发环境1.QT creator 最稳定的版本是5.15 LTS,最新版本QT6.3(收费) 2.Visual studio 微软集成开发环境,宇宙最强ide,内部安装一个QT的插件即可进行QT开发
QT是基于C++的GUI框架
3.新建第一个QT工程
hellowqt.pro
QT+=core gui//用于添加用到的QT模块,比如后面进行数据库的开发,需要添加sql模块
在第五个版本以后,widgets模块从gui中独立出来
4.项目构建流程
TBD
5.标准信号槽
connect(ui->btnMax,SIGNAL(clicked()),this,SLOT(showMaximized()));
6.自定义信号槽
自定义类commander,soldier
connect(&commander,SIGNAL(go()),&soldier,SLOT(fight()));
7.信号槽的多种表达方式
- SIGNAL/SLOT(QT4)
- 函数地址
- UI设计师界面-转到槽
- UI设计师界面-信号槽编辑器
- lambda-----C++11
五个部分
[ 捕获列表]((parameters)option->return-type(body)
- 捕获列表
- parameters:参数列表 可选
- option:函数选项 可选
- return-type:返回值类型 可选 没有返回值的时候也可以连同符号->一起省略
- body:函数体
//1、函数的定义
#if 0
[](){
qDebug()<<"lambda..";
};
#endif
//2、函数的调用
#if 0
[](){
qDebug()<<"lambda..";
}()
#endif
int a=10;
#if 0
//3、不捕获任何变量
[](){
qDebug()<<"lambda..";
}();
#endif
//4、按照引用捕获任何变量
#if 0
[&](){
qDebug()<<a++;
}();
qDebug()<<a;
#endif
//5、按值进行捕获
#if 0
[=]()mutable{
qDebug()<<a++;
}();
qDebug()<<a;
#endif
//5、按参数进行捕获
#if 0
[=](int x,y)mutable{
qDebug()<<x+y;
}(1,2);
#endif
//6、返回值
#if 0
int sum=[](int x,y)->int{
return x+y;
}(1,2);
qDebug()<<sum;
#endif
//6、v2返回值
#if 0
int sum=[](int x,y){
return x+y;
}(1,2);
qDebug()<<sum;
#endif
8.信号槽-扩展
- 8.1 重载的时候如何进行信号槽的连接
void (Commander::*pGo)()=&Commander::go;
or→
void (Soldier::*pFightforc)(QString)=&Soldier::fight;
8.2 一个信号连接多个槽
举例:军官发出信号,士兵1前进,士兵2逃跑8.3 多个信号连接同一个槽
距离:军官发出move或者go信号,都可以使士兵前进fight8.4 信号连接信号
8.5 信号断开-disconnect
本文含有隐藏内容,请 开通VIP 后查看