一、QT介绍
1.什么是QT
跨平台C++图形用户界面应用程序开发框架。
《1》跨平台: 支持各种的操作系统, windows、Linux、MAC
《2》编程语言:C++ 面向对象编程 类
《3》应用程序开发框架:图形用户界面 GUI应用程序 非GUI的应用程序
《4》丰富的API : 有250多个以上的类,并且类有做模块的划分,代码模块化程序高!
Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。
2.QT 应用:
车载系统
KTV 点歌系统
WPS
咪咕音乐
飞车游戏
播放器
安防监控系统 –海康威视 执行记录仪、行车记录仪、智能手环
医疗行业、 上位机、军工企业
二、QT的核心机制:信号与槽
1.作用
实现对象与对象之间的通信
2.信号与槽的关联
Connect(信号的发送者, 信号, 信号的接收者, 槽函数);
信号的接收者收到信号执行对应的槽函数。
3.信号与槽
<1>.信号以及槽函数能否重载: 可以的
<2>.信号以及槽函数能否被继承: 可以的
<3>.信号能否传参: 可以的
信号要进行传参需要注意:
信号的参数个数要大于等于槽函数参数的个数,并且参数类型的匹配的顺序只能是从左向右!
<4>信号如何触发: emit 信号();
<5>信号不需要我们自己去实现
三、QT中如何配置sqlite3数据库
测试是否配置成功
四、图片的显示
1.静态图片显示
需要用到的类及函数:
QPushButon 按钮 clicked()、 setText()、text()
QLabel 显示图片 setPixmap(const QPixmap &) setScaledContents(true)
QPixmap load() scaled()
图片资源的加载步骤:
- 选中工程-》右键-》add new -》 Qt-》qrc
- Add Prefix—》/
- Add files---》选择图片,打开
- 保存
- 复制路径: 找到对应的图片资源,右键—》copy path
2.动态图片的显示
需要用到的类及函数:
QPushButton按钮:控制动图的显示与暂停 setEnabled()
QLabel标签:去显示动图 setMovie(QMovie *movie)
QMovie setFileName() start() stop()
五、进度条的显示
需要用到的类:
QPushButon 点击按钮,开始下载
QProgressBar 显示下载的进度 setRange()、setValue()、value()、
QTimer timeout信号产生,槽函数中随机生成一个数,表示这一秒的下载的进度
六、多界面的切换
可以使用三种方法:
《1》.哪里需要哪里创建界面类的对象
存在的问题:一个界面会被创建很多个对象
《2》.使用QT的核心机制:信号与槽函数
应用:当界面比较少的情况下使用
《3》.使用单例模式来实现界面管理
七、事件
事件(函数):
指的是在QT的类中预先定义好的某些特定信号对应的处理函数,这些特定的。
信号一般是由外设发出,如鼠标、键盘、定时器等,这些处理函数是虚函数 ,在工程中使用时需要重写。
事件函数和槽函数的区别:
事件函数:是QT类中提前定义好的虚函数,使用时需要重写,但不需要使用connect和信号进行关联。一旦信号发出,对应的事件函数就会被调用。
槽函数:可以是提前定义好的(但不是虚函数,不需要重写),也可以是自定义的(不是 虚函数,不需要重写),使用时需要用connect将信号和槽关联。
1.鼠标事件
鼠标按压事件-->mousePressEvent()
鼠标释放事件-->mouseReleaseEvent()
鼠标移动事件-->mouseMoveEvent()
鼠标双击事件-->mouseDoubleClickEvent()
2.键盘事件
键盘按压事件-->keyPressEvent()
键盘释放事件-->keyReleaseEvent()
3.过滤事件
过滤事件-->eventFilter
QEvent:通用事件类 它派生出来了QKeyEvent和QMouseEvent
4.定时器事件
QT中的定时器有两种用法:
QTimer timeout-->槽函数
每一个QT工程都包含一个默认的定时器
启动:this->startTimer(1000);
当定时时间到时,对应的定时器事件函数就会被系统自动调用
定时器事件--》timerEvent()
5.绘图事件
画一条线
分析:1 鼠标移动-->收集移动的点值-->保存-->容器-->QList<QPoint> list;
2 绘图事件-->从容器中取出点值,绘制成一条线
画多条线
分析:
1 鼠标移动-->收集移动的点值-->保存-->容器-->
QVector< QVector<QPoint> > _lines;//线集合对象
2 鼠标按压-->点值-->保存-->容器
创建一条新线
3 绘图事件-->二层循环 线-->点
画图-->QImage
pt.drawImage(0,0,drawing,0,0,this->width(),this->height())
参数1:目标窗体的起始位置X坐标
参数2:目标窗体的起始位置Y坐标
参数3:需要绘制的源图片
参数4:源图片的起始位置X坐标
参数5:源图片的起始位置Y坐标
参数6:目标窗体的宽度
参数7:目标窗体的高度
八、QT网络编程
QTcpSocket
QUdpSocket