百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

抓大放小,瞅瞅 Qt 的几个基础模块

bigegpt 2024-08-06 11:52 2 浏览

大家好,对于 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 的几个基础模块

版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除

相关推荐

Linux 系统启动完整流程

一、启动系统流程简介如上图,简述系统启动的大概流程:1:硬件引导UEFi或BIOS初始化,运行POST开机自检2:grub2引导阶段系统固件会从MBR中读取启动加载器,然后将控制权交给启动加载器GRU...

超专业解析!10分钟带你搞懂Linux中直接I/O原理

我们先看一张图:这张图大体上描述了Linux系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。这篇文章就以这张图为基础,介绍Linux在I/O上做了哪些事情。文件系统什么是...

linux入门系列12--磁盘管理之分区、格式化与挂载

前面系列文章讲解了VI编辑器、常用命令、防火墙及网络服务管理,本篇将讲解磁盘管理相关知识。本文将会介绍大量的Linux命令,其中有一部分在“linux入门系列5--新手必会的linux命令”一文中已经...

Linux环境下如何设置多个交叉编译工具链?

常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:sudoapt-getinstallgcc-arm-linux-gnueab...

可算是有文章,把Linux零拷贝技术讲透彻了

阅读本文大概需要6.0分钟。作者:卡巴拉的树链接:https://dwz.cn/BaQWWtmh本文探讨Linux中主要的几种零拷贝技术以及零拷贝技术适用的场景。为了迅速建立起零拷贝的概念...

linux软链接的创建、删除和更新

大家都知道,有的时候,我们为了省下空间,都会使用链接的方式来进行引用操作。同样的,在系统级别也有。在Windows系列中,我们称其为快捷方式,在Linux中我们称其为链接(基本上都差不多了,其中可能...

Linux 中最容易被黑客动手脚的关键目录

在Linux系统中,黑客攻击后常会针对关键目录和文件进行修改以实现持久化、提权或隐藏恶意活动。本文介绍下黑客最常修改的目录及其手法。一、/etc目录关键文件有:/etc/passwd和/et...

linux之间传文件命令之Rsync傻瓜式教程

1.前言linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说...

Linux下删除目录符号链接的方法

技术背景在Linux系统中,符号链接(symlink)是一种特殊的文件,它指向另一个文件或目录。有时候,我们可能需要删除符号链接,但保留其指向的目标目录。然而,在删除符号链接时可能会遇到一些问题,例如...

阿里云国际站注册教程:aa云服务器怎么远程链接?

在全球化的今天,互联网带给我们无以计数的便利,而云服务器则是其中的重要基础设施之一。这篇文章将围绕阿里云国际站注册、aa云服务器如何远程链接,以及服务器安全防护如Ddos防火墙、网站应用防护waf防火...

Linux 5.16 网络子系统大范围升级 多个新适配器驱动加入

Linux在数据中心中占主导地位,因此每个内核升级周期的网络子系统变化仍然相当活跃。Linux5.16也不例外,周一最新与网络相关的更新加入了大量的驱动和新规范的支持。一个较新硬件的驱动是Realt...

搭建局域网文件共享服务(Samba),手机电脑都能看喜欢的影视剧

作为一名影视爱好者,为了方便地观看自己喜欢的影视作品,在家里搞一个专门用来存放电影的服务器是有必要的。蚁哥选则用一台Ubuntu系统的电脑做为服务器,共享影音文件,其他同一个局域网内的电脑或手机可以...

分享一个实用脚本—centos7系统巡检

概述这周闲得慌,就根据需求写了差不多20个脚本(部分是之前分享过的做了一些改进),今天主要分享一个给平时运维人员用的centos7系统巡检的脚本,或者排查问题检查系统情况也可以用..实用脚本#!/bi...

Linux 中创建符号链接的方法

技术背景在Linux系统里,符号链接(SymbolicLink),也被叫做软链接(SoftLink),是一种特殊的文件,它指向另一个文件或者目录。符号链接为文件和目录的管理带来了极大的便利,比...

一文掌握 Linux 符号链接

符号链接(SymbolicLink),通常被称为“软链接”,是Linux文件系统中一种强大而灵活的工具。它允许用户创建指向文件或目录的“快捷方式”,不仅简化了文件管理,还在系统配置、软件开发和日...