qt模块学习记录
- [一、Qt Core其他模块都用到的核心非图形类](#一、Qt Core其他模块都用到的核心非图形类)
- [二、Qt GUI 设计 GUI 界面的基础类,包括 OpenGL](#二、Qt GUI 设计 GUI 界面的基础类,包括 OpenGL)
- 三、功能模块
-
- [Qt Network 使网络编程更简单和轻便的类](#Qt Network 使网络编程更简单和轻便的类)
- [Qt SQL 使用 SQL 用于数据库操作的类](#Qt SQL 使用 SQL 用于数据库操作的类)
- [Qt Multimedia 音频、视频、摄像头和广播功能的类](#Qt Multimedia 音频、视频、摄像头和广播功能的类)
- 四、老式界面
-
- [Qt Widgets 用于构建 GUI 界面的 C++ 图形组件类](#Qt Widgets 用于构建 GUI 界面的 C++ 图形组件类)
- [五、现代界面:Qt Quick 全家桶](#五、现代界面:Qt Quick 全家桶)
-
- [Qt QML 用于 QML 和 JavaScript 语言的类](#Qt QML 用于 QML 和 JavaScript 语言的类)
- [Qt Quick 用于构建具有定制用户界面的动态应用程序的声明框架](#Qt Quick 用于构建具有定制用户界面的动态应用程序的声明框架)
- [Qt Quick Controls 创建桌面样式用户界面,基于 Qt Quick 的用户界面控件](#Qt Quick Controls 创建桌面样式用户界面,基于 Qt Quick 的用户界面控件)
- [Qt Quick Dialogs 用于 Qt Quick 的系统对话框类型](#Qt Quick Dialogs 用于 Qt Quick 的系统对话框类型)
- [Qt Quick Layouts 用于 Qt Quick 2 界面元素的布局项](#Qt Quick Layouts 用于 Qt Quick 2 界面元素的布局项)
- 六、媒体界面
-
- [Qt Multimedia Widgets 实现多媒体功能的界面组件类](#Qt Multimedia Widgets 实现多媒体功能的界面组件类)
- 七、测试
-
- [Qt Test 用于应用程序和库进行单元测试的类](#Qt Test 用于应用程序和库进行单元测试的类)
- 总之
一、Qt Core其他模块都用到的核心非图形类
c
Qt Core = 提供界面无关的基础功能比如:
字符串
列表
时间
线程
信号槽(Qt 最核心机制)
事件循环
文件读写
配置读写
插件机制
它不画窗口、不显示按钮、不做界面!
二、Qt GUI 设计 GUI 界面的基础类,包括 OpenGL
c
Qt GUI = 画布 + 画笔 + 窗口系统
它能做:
创建窗口
画点、线、矩形
处理鼠标 / 键盘
显示图片
支持 OpenGL
但它没有按钮、没有输入框、没有菜单。
三、功能模块
Qt Network 使网络编程更简单和轻便的类
c
Qt Network = 网线 + 网卡 + 网络协议
它能干嘛?
发 HTTP 请求(访问网页)
TCP/IP 通信(两台电脑互相发数据)
UDP 广播
SSL 加密(https 那种安全加密)
OPC UA 底层通信也靠它!
Qt SQL 使用 SQL 用于数据库操作的类
c
Qt SQL = 让 Qt 程序能读写数据库的一套工具支持所有主流数据库:
SQLite(嵌入式,无需安装)
MySQL
SQL Server
PostgreSQL
Oracle
c
它能做什么?(超实用)
连接数据库
创建表
插入数据(存 OPC UA 采集值)
查询数据(历史记录、趋势图)
修改、删除数据
支持事务(保证数据安全)
Qt Multimedia 音频、视频、摄像头和广播功能的类
c
Qt Multimedia = 底层音频、视频、摄像头、播放核心功能
能干什么?
1. 播放音乐
2. 播放视频
3. 打开摄像头
4. 录音
5. 收音机 / 广播
负责:解码、播放、采集、控制。
四、老式界面
Qt Widgets 用于构建 GUI 界面的 C++ 图形组件类
c
Qt Widgets = 现成的窗口、按钮、表格、树、滑块
它包含:
QMainWindow(主窗口)
QPushButton(按钮)
QTreeView(树,OPC UA Viewer 显示节点就是它)
QTableView(表格)
QLineEdit(输入框)
QMenu(菜单)
五、现代界面:Qt Quick 全家桶
Qt QML 用于 QML 和 JavaScript 语言的类
c
Qt QML 模块 = 让 QML 界面能跑起来的引擎
Qt QML 模块做什么?
1. 解析 QML 语法
2. 运行界面
3. 让界面和 C++ 通信
4. 支持 JavaScript 逻辑
Qt Quick 用于构建具有定制用户界面的动态应用程序的声明框架
c
Qt Quick= 动态界面的底层核心(画布 + 引擎)或者一块灵活的动态画布
作用:
提供最基础的界面元素
支持动画、过渡、触摸、自定义 UI
可以自己画按钮、窗口、界面
Qt Quick Controls 创建桌面样式用户界面,基于 Qt Quick 的用户界面控件
c
Qt Quick Controls= 现成的界面控件(按钮、输入框、开关、列表)专门给 Qt Quick 用。
包含:
Button(按钮)
TextField(输入框)
Slider(滑块)
Switch(开关)
Label(文字)
Qt Quick Dialogs 用于 Qt Quick 的系统对话框类型
c
Qt Quick Dialogs= 弹出框(文件选择、消息框、确认框),就是弹出的小窗口。
比如:
1. 打开文件
2. 保存文件
3. 提示 "确定要删除吗?"
4. 报错提示框
Qt Quick Layouts 用于 Qt Quick 2 界面元素的布局项
c
Qt Quick Layouts= 自动排版工具(让界面不乱),不用手动算坐标,界面自动整齐。
作用:
自动排列按钮
窗口拉伸时控件自动适应
垂直布局、水平布局、网格布局
六、媒体界面
Qt Multimedia Widgets 实现多媒体功能的界面组件类
c
Qt Multimedia Widgets = 显示窗口(画面、视频框)
七、测试
Qt Test 用于应用程序和库进行单元测试的类
c
Qt Test = 专门给 Qt 程序写【单元测试】的工具
总之
c
你的应用程序
↓
┌───────────────────────────────────────────┐
│ 功能模块 │
│ ├─ Qt OPC UA 工业设备通信 │
│ ├─ Qt Network 网络通信 │
│ ├─ Qt SQL 数据库 │
│ ├─ Qt Multimedia 音视频/摄像头 │
│ └─ Qt Test 单元测试(测代码) │
└───────────────────────────────────────────┘
↓
┌───────────────────────────────────────────┐
│ 界面两大分支 │
│ ├─ Qt Widgets 传统桌面界面 │
│ │ │
│ └─ Qt Quick 全家桶 现代动态界面 │
│ ├─ Qt Quick 核心引擎 │
│ ├─ Qt QML QML语言解析 │
│ ├─ Qt Quick Controls 按钮/控件 │
│ ├─ Qt Quick Dialogs 弹出对话框 │
│ └─ Qt Quick Layouts 界面排版 │
└───────────────────────────────────────────┘
↓
┌───────────────────────────────────────────┐
│ Qt GUI 底层画图、窗口、事件 │
└───────────────────────────────────────────┘
↓
┌───────────────────────────────────────────┐
│ Qt Core 核心基础(所有都靠它) │
└───────────────────────────────────────────┘
做 OPC UA 客户端 / 工控软件:
Core → GUI → Widgets → Network → 软件
做 现代触摸屏界面:
Core → GUI → QML → Quick → ... → Network → 软件