Qt模块介绍

Qt采用模块化开发,可以根据需要使用各个模块,减少最终程序体积。

一般情况下我们程序使用的是libQt5Core.so之类的动态链接库,但是如果你使用的是静态库就需要付费,因为静态库是被编译进程序中的看不出任何Qt相关的内容,而动态库你可以从库名称看出是Qt提供的。

但是模块不等于dll,一个dll中可能封装着多个模块。比如说,Qt5中的libQt5Core.so中包含QFile文件操作、QThread线程操作、QBuffer缓冲区操作、QLibray动态库操作等等子模块,而libQt5Sql.so中只包含数据库处理模块。

Qt在进入中国后会给Qt用户广发律师函,强迫用户买授权。

Qt5中的所有功能被划分为两种模块, Qt Esstential模块和 Qt add-on模块

  • Qt Essential模块对于所有的平台均一致,构成了Qt的基本框架
    • 在Qt的整个版本中将会保持原代码和二进制兼容
  • Qt add-on模块提供了扩展功能或者是平台特定功能
    • 模块自己的版本会保持兼容
    • 旧功能模块,例如 Qt Quick1 和 Qt OpenGL
    • 对于客户和开发有意义的往往是 Qt add-on模块

随着版本的更新,不同模块属于什么类型会变化。

Essential模块

  • Concurrent 并发库 在QThread(位于Core中)的基础上又针对并发二次封装了一层
  • Core 核心库,包含多个子模块
  • DBus DBus模块,Linux下总线通信模块
  • Multimedia 音视频
  • Network 网络模块
  • OpenGL OpenGL模块,在常用OpenGL的功能基础上的功能
  • Gui
  • Widgets 界面模块,包含OpenGL处理功能
  • Sql 数据库模块,读取MySQL、SQLITE3等等数据
  • Qml 一种格式、也算是一种逻辑
  • Svg svg读取、保存、显示、修改
  • Quick 一种框架,由Qml、运行时、设计元素组成
  • Xml xml读写
  • Test 单元测试

插件(Add-on)模块

  • sqldrivers mysql/sqlite3等数据接口实现
  • platforms Windows/Linux等平台的接口
  • multimedia 基于ffmpeg的接口开发
  • imageformat gif/jpg/png/svg等图片处理接口

Qt模块介绍
https://blog.jackeylea.com/qt/intro-of-qt-modules/
作者
JackeyLea
发布于
2025年1月14日
许可协议