网站首页 > 技术文章 正文
大家好,对于 Qt 初学者而言,首先需要学习的就是 Qt 的基础模块 ( Qt Essentials )。
这些模块对于大多数 Qt 应用程序都是通用的,适用于 Qt 支持的所有平台,并且在整个 Qt5 生命周期中保持源码和二进制兼容。
另外一些用于特殊目的的模块,被视为附加模块 ( Qt Add-Ons ),即使它们在 Qt 所支持的所有平台上都可用。
Qt 基础模块
名称功能Qt Core非图形相关的基础类。Qt GUI图形界面相关的基础类。Qt Multimedia用于支持音视频、摄像头功能的类。Qt Multimedia Widgets用于支持多媒体的图形类。Qt Network用于简化网络编程的类。Qt QMLQML and JavaScript 相关的类。Qt Quick用于构建高动态和易交互的用户界面的声明式框架。Qt Quick Controls提供轻量级的 QML 类型,用于为桌面、嵌入式和移动设备创建高性能的用户界面。Qt Quick Dialogs用于创建对话框的 QML types。Qt Quick Layouts用于布局的 QML typesQt Quick Test用于对 QML 应用的进行单元测试Qt SQL用于 SQL 相关的操作Qt Test用于对 Qt 应用和库进行单元测试Qt Widgets提供了一组 UI 元素来创建经典用户界面
我们先了解这几个模块:
Qt Core;
Qt GUI;
Qt Widgets;
Qt Multimedia;
Qt Network;
Qt QML;
Qt Quick;
Qt Core 模块
提供了 Qt 里最核心的、且非 GUI相关的功能,包括但不限于:
1、 最核心的功能,包括元对象系统 ( QObject )、属性系统 ( Q_PROPERTY() ),对象模型 ( QMetaXXX )、信号槽机制 (用于对象间通讯)等;
2、线程 ( QThread、QRunnable 等 )和并发 ( QMutex、QSemaphore 等 );
3、输入/输出 ( QIODevice 等 )、资源 ( xxx.qrc文件 ) 和容器 ( QVector<T> 等 );
4、附加框架,包括动画 ( QXXXAnimation )、JSON ( QJsonXXX )、状态机 ( QStateMachine )、插件 ( QXXXPlugin ) 、事件处理 ( QEvent ) 等;
5、等等...
更详细的说明:
https://doc.qt.io/qt-5/qtcore-index.html
Qt GUI 模块
提供 GUI 程序的基本功能,包括与窗口系统的集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图像、字体、拖放等。
这些类一般由 Qt 用户界面类内部使用,同时也可以被用于访问底层的 OpenGL ES 图像 API。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:嵌入式物联网学习资料(头条)
按功能细分:
1、应用窗口 (QGuiApplication、 QWindow 等)。
QGuiApplication 提供主事件循环,所有的事件包括界面绘画和用户输入等都会在这个循环里进行处理和分发。
QWindow 在底层窗口系统中代表一个窗口。
2、2D 图像 ( QPainter 、QImage 等 )、字体 ( QFont )。
3、OpenGL and OpenGL ES ( QOpenGLContext 等)相关的整合。Qt 支持用 OpenGL and OpenGL ES 来渲染窗口。
4、Vulkan 相关的整合 (QVulkanInstance、QVulkanWindow 等)。
5、拖放相关 (QDrag、QDragEnterEvent)
更详细的说明:
https://doc.qt.io/qt-5/qtgui-index.html
Qt Widgets 模块
Qt Widgets 提供了一组的 UI 元素,用于构建用户界面。
Widget 是在 Qt 中创建用户界面的主要元素,它可以显示数据和状态信息,接受用户输入,或者作为容器用于包含其他 Widget。
QWidget 类提供了向屏幕渲染和处理用户输入事件的基本能力。Qt 提供的所有 UI 元素要么是 QWidget 的子类,要么是与 QWidget 子类关联使用。通过子类化 QWidget 并重新实现虚拟事件处理可以创建自定义的 Widget。
Qt Widgets 里的包含的类非常多,常见的如:QPushButton、QSlider、QComboBox、QDialog、QLineEdit,大概有几十个吧。
完整的类列表:
https://doc.qt.io/qt-5/qwidget.html
更详细的说明:
https://doc.qt.io/qt-5/qtwidgets-index.html
Qt Multimedia 模块
Qt 多媒体相关的支持都位于此模块中。
支持的功能:
- 访问原始音频设备进行输入和输出;
- 播放低延迟的声音效果;
- 播放播放列表中的音视频文件;
- 录制音频并进行压缩;
- 调整和收听广播电台;
- 使用相机,包括取景器、图像捕捉和电影录制;
- 等等...
按功能划分:
1、音频相关。
Qt Multimedia 提供了一系列的音频类,涵盖了音频输入 ( QAudioRecorder )、输出 ( QMediaPlayer ) 和处理的低级和高级用法 ( QSoundEffect、QAudioEncoderSettings) 等。
2、视频相关。
Qt Multimedia 提供了用于播放和操作视频数据的上层和底层 C++ 类。例如,解码 (QMediaPlayer ),编码 ( QMediaRecorder )、帧数据 ( QVideoFrame )、显示控件 ( QVideoWidget、QGraphicsVideoItem ) 等。
3、Camera 相关
Qt Multimedia 提供了许多 Camera 相关的类。例如,探测 Camera ( QCameraInfo、QCamera )、预览 ( QCameraViewfinder )、采集图像 ( QCameraImageCapture )、录制视频 ( QMediaRecorder )、参数控制 ( QCameraFocus、QCameraExposure ) 等;
4、Radio 相关
暂时用不到,就不展开了。
更详细的说明:
https://doc.qt.io/qt-5/qtmultimedia-index.html
Qt Network 模块
Qt Network 提供了一系列的网络类,极大地简化了网络编程。
按功能划分:
1、HTTP 、FTP 相关。
包括管理网络访问 ( QNetworkAccessManager )、发送请求 ( QNetworkRequest )、接收响应和数据 ( QNetworkReply )。
2、TCP 相关。
包括 TCP Socket 通讯 ( QTcpSocket )、搭建 TCP 服务端 ( QTcpServer ) 等。
3、UDP 相关。
主要就是 UDP Socket 通讯 ( QUdpSocket )。
4、其他。
主机信息 ( QHostInfo )、代理 ( QNetworkProxy );
更详细的说明:
https://doc.qt.io/qt-5/qtnetwork-index.html
Qt QML 模块
QML 是一种用于描述应用程序用户界面的声明式编程语言。
Qt QML 模块为用 QML 开发应用程序和库提供了一个框架。它定义并实现了 QML 语言和引擎的基础结构。
另外,它支持应用程序开发人员能够用自定义类型来扩展 QML语言,并使 QML、JavaScript 和 C++ 进行混合开发。
以入门为目的话,先掌握如何使用 QML 就好,不需要了解 QML 模块的内部实现。
Qt QML 的入门还是比较容易的,感兴趣的可以参考文章:
用一篇小短文,带你进入 QML 的美妙世界
这几个 QML 版的 Hello World 你学会了吗?
更详细的说明:
https://doc.qt.io/qt-5/qtqml-index.html
Qt Quick 模块
Qt Quick 模块是编写 QML 应用程序的标准库。
虽然 Qt QML 模块提供了 QML 引擎和语言基础设施,但 Qt Quick 模块提供了用 QML 创建用户界面所需的所有基本类型,包括一些 C++ 的类,和大量的 QML Types。
QML Types 的作用和 C++ 里的 Class 类似,它们都是对事物的抽象,用户使用它们进行对象的实例化。
作为初学者,我们应该先重点关注 QML Types。
Qt Quick 里有非常多的 QML Types,大多数都继承自 Item 这个 QML Type。
Window {
[...]
Item {
Image {
source: "qrc:/logo.png"
}
Image {
width: 100
height: 100
source: "qrc:/logo.png"
}
}
}
原文链接:https://mp.weixin.qq.com/s/Jb63D8Fmqx2Vye4ZjI9CKg
文章转载自:老吴嵌入式
文章来源于:抓大放小,瞅瞅 Qt 的几个基础模块
原文链接:抓大放小,瞅瞅 Qt 的几个基础模块
版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除
- 上一篇: 小谈一下Qt的绘制引擎 qt绘图控件
- 下一篇: 实战PyQt5: 082-图形视图(GV)框架简介
猜你喜欢
- 2024-10-27 FFMpeg-3、基于QT实现音视频播放显示
- 2024-10-27 Qt音视频开发28-ffmpeg解码本地摄像头(yuv422转yuv420)
- 2024-10-27 Qt音视频开发20-vlc内核动态保存录像文件(不需要重新编译源码)
- 2024-10-27 Qt音视频开发40-ffmpeg采集桌面并录制
- 2024-10-27 Qt音视频开发19-vlc内核各种事件通知
- 2024-10-27 Qt/C++音视频开发54-视频监控控件的极致设计
- 2024-10-27 Qt编写全能播放组件(支持ffmpeg2/3/4/5/6/Qt4/5/6)
- 2024-10-27 Qt/C++音视频开发49多级连保存和推流(同时保存到推流到多个平台)
- 2024-10-27 Qt音视频开发15-动态切换解码内核的设计
- 2024-10-27 WebRTC 实战: QT for Windows 多人音视频通话
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)