Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。
1.1 编译器MSVC和MinGW
- MSVC: 微软的VC编译器,主要用于PC开发。
- MinGW: Minimalist GNU on Windows,它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你 在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。 主要用于跨平台开发。
两者的配置方式存在差异,并且使用上兼容性不好。
1.2 基本知识点
1.2.1 默认的基类
- QMainWindow(主窗口):提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个停靠部件(dock widgets)、一个状态栏(status bar)和一个中心部件(central widget),是许多应用程序的基础,如文本编辑器、图片编辑器等。
- QWidget (空窗口): 能够在屏幕上显示的一切组件的父类,只有中心部件
- QDialog(对话框): 一般用于弹窗,也可以用于主界面显示,继承于QWidget。
1.3 信号和槽机制
信号和槽机制 ——观察者模式
信号(signal):各种事件
槽(slot): 响应信号的动作
当某个事件发生后,如某个按钮被点击了一下,它会发出一个被点击的信号。 某个对象接收到这个信号后,就会做一些相关的处理动作。 想让一个对象收到另一个对象发出的信号,需要建立连接。
//connect函数是建立信号发送者、信号、信号接收者、槽四者关系的函数:
connect(sender, signal, receiver, slot);
注:信号函数只需要声明,不需要定义;槽函数需要声明和定义。
1)信号和槽机制的优点:类型安全;松散耦合。一个类若要支持信号和槽,则必须从QObject或QObject的子类继承(信号与槽机制不支持对模板的使用)。
2)信号和槽机制的效率: 信号和槽机制增强对象间通信的灵活性。一般情况,通过传递一个信号来调用槽函数将会比直接调用非虚函数运行速度慢10倍,原因:
- 多线程时,信号可能需要排队等候;
- 编组/解组传递的参数;
- 安全地遍历所有的关联;
- 需要定位接收信号的对象。
1.3.1 标准信号和槽
1.3.2 自定义信号和槽
1.4 使用UI文件创建窗口
1.5 消息事件机制
1.6 Qt容器与算法
1.6.1 QString
1.7 Qt网络及多线程
QT += network
#include<QTcpSocket>
#include<QUdpSocket>
#include<QHostInfo>
#include<QHostAddress>
1.8 Qt应用程序打包及发布
1.9 Qt单元测试框架
1.9.1 QTestLib框架详解
2.0 正则QRegExp
QRegExp是Qt中的正则表达式类,支持非常广泛的正则表达式语法,包括字符集、重复、分组、锚定等等,提供了多种方法来检索匹配和替换匹配项。帮助开发人员轻松执行高级字符串操作,比如:验证输入、过滤数据等。
2.1 一些头文件与函数
#include<QPainter> //处理绘制窗口背景
void paintEvent(QPaintEvent *event) //更改窗口背景图片
{
QPainter mainPainter(this);
mainPainter.drawPixmap(rect(), QPixmap(":/images/1.jpg"), QRect());
}
#include<QMouseEvent> //鼠标事件
#include<QSettings> //默认配置,如:文件路径
#include<QCryptographicHash> //加密算法,如:Md4、Sha256