模块化设计
所谓软件的模块划分是指在软件设计过程中,为了能够对系统开发流程进行管理,保证系统的稳定性以及后期的可维护性,从而对软件开发按照一定的准则进行模块的划分。根据模块来进行系统开发,可提高系统的开发进度,明确系统的需求,保证系统的稳定性。
软件设计过程中通过对软件进行模块划分可以达到以下的好处:
- 使程序实现的逻辑更加清晰,可读性强;
- 使多人合作开发的分工更加明确,容易控制;
- 能充分利用可以重用的代码;
- 抽象出可公用的模块,可维护性强,以避免同一处修改在多个地方出现;
- 方便进行单元测试;
- 系统运行可方便地选择不同的流程;
- 可基于模块化设计优秀的遗留系统,方便的组装开发新的相似系统,甚至一个全新的系统;
模块化划分一般按任务需求划分和按数据模型划分。
按任务需求进行模块划分的主要步骤如下:
- 分析系统的需求,得出需求列表;
- 对需求进行归类,并划分出优先级;
- 根据需求对系统进行模块分析,抽取出核心模块;
- 将核心模块进行细化扩展,逐层得到各个子模块,完成模块划分;
按照数据模型进行模块划分的主要步骤如下:
- 根据系统框架抽象出系统的核心数据模型;
- 根据核心数据模型将系统功能细化,并将数据模型与视图等剥离,细化数据的流向;
- 依据数据的流向制定模块和接口,完成模块划分;
Qt模块
Qt作为一个大的跨平台C++应用框架也采用了模块化的设计方法,弄清楚她的模块划分有助于我们更清晰的理解和应用。
Qt文档中将现有模块分为Essential Models(基础模块)、Add-on Models(扩展模块)、Value-Add Models(增值模块,就是商业版本需要付费的一些额外模块)、Technology Preview Models(技术预览模块,尚在开发完善中的模块,但可以使用了)。
本栏目主要介绍Essential Models和Add-on Models。
Essential Models
- Qt Core: 核心模块,提供了其它模块所必需的数据类型和非图像类
- Qt GUI: 图形用户界面(GUI)组件的基类,包括OpenGL
- Qt Widgets: 使用QWidget扩展的控件类
- Qt QML: QML和JavaScript语言的类
- Qt Quick:用于构建具有自定义用户界面的高动态应用程序的声明性框架
- Qt Quick Controls:quick应用程序中使用的控件类
- Qt Quick Dialogs: quick应用程序中使用的对话框类
- Qt Quick Layouts:quick应用程序中使用的布局类
- Qt Network: 络库
- Qt SQL:数据库
- Qt Multimedia:多媒体库
- Qt Multimedia Widgets: 基于Multimedia开发的控件类
Add-on Models
- Qt Quick Controls 2:提供轻量级QML类型,用于为嵌入式和移动设备创建良好的用户界面
- Qt Quick Extras:提供了quick应用程序特殊的控件集
- Qt Quick Widgets:quick控件的C++类
- Qt WebSockets:web套接字通信
- Qt WebChannel:提供从HTML客户端访问QObject或QML对象,以实现Qt应用程序与HTML/JavaScript客户端的无缝集成。
- Qt WebEngine:使用Chromium浏览器内核的类和函数
- Qt WebView:显示web内容的视图类
- Qt Charts:在静态或动态数据模型驱动下,显示图表的UI组件
- Qt Data Visualization:用于创建三维数据可视化的UI组件
- Qt Virtual Keyboard:一个实现不同输入方法和QML虚拟键盘,支持本地化的键盘布局和定制的视觉主题
- Qt Active:用于Windows平台下使用ActiveX和COM的类
- Qt 3D:近实时仿真系统的功能,支持2D和3D渲染
- Qt Bluetooth:提供蓝牙设备的访问
- Qt NFC:提供NFC设备的访问
- Qt Sensors:提供传感器设备的访问
- Qt Serial Port:提供串行端口的访问
- Qt Canvas 3D:支持opengl -like 3D绘图调用在使用了JS的quick应用程序中
- Qt Concurrent:在不使用低级线程api的情况下编写多线程程序的类
- Qt D-Bus:使用D-Bus协议上进行进程间通信的类
- Qt Image Formats:额外的图像格式插件:TIFF,MNG,TGA,WBMP
- Qt SVG:可伸缩矢量图形 (Scalable Vector Graphics)
- Qt Graphical Effects:在quick2应用程序中的图像效果类
- Qt Positioning:提供对位置、卫星和区域监测类的访问
- Qt Location:在QML应用程序中显示地图导航
- Qt Print Support:打印支持类
- Qt Android Extras:Android平台特定的api
- Qt Mac Extras:Mac平台特定的api
- Qt Windows Extras:Windows平台特定的api
- Qt X11 Extras:X11平台特定的api
每个模块在Qt安装目录的库路径或插件目录下都有对应的动态库或静态库
如果使用qmake来构建项目,Qt Core和Qt GUI模块是默认包含的,使用其它模块可以在.pro文件中加入如下格式语句:
注:不同Qt5版本,模块可能略有增减,请参考Qt的帮助文档.
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!