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/