Qt–模块划分

模块化设计

所谓软件的模块划分是指在软件设计过程中,为了能够对系统开发流程进行管理,保证系统的稳定性以及后期的可维护性,从而对软件开发按照一定的准则进行模块的划分。根据模块来进行系统开发,可提高系统的开发进度,明确系统的需求,保证系统的稳定性。

软件设计过程中通过对软件进行模块划分可以达到以下的好处:

  • 使程序实现的逻辑更加清晰,可读性强;
  • 使多人合作开发的分工更加明确,容易控制;
  • 能充分利用可以重用的代码;
  • 抽象出可公用的模块,可维护性强,以避免同一处修改在多个地方出现;
  • 方便进行单元测试;
  • 系统运行可方便地选择不同的流程;
  • 可基于模块化设计优秀的遗留系统,方便的组装开发新的相似系统,甚至一个全新的系统;

模块化划分一般按任务需求划分和按数据模型划分。

按任务需求进行模块划分的主要步骤如下:

  • 分析系统的需求,得出需求列表;
  • 对需求进行归类,并划分出优先级;
  • 根据需求对系统进行模块分析,抽取出核心模块;
  • 将核心模块进行细化扩展,逐层得到各个子模块,完成模块划分;

按照数据模型进行模块划分的主要步骤如下:

  • 根据系统框架抽象出系统的核心数据模型;
  • 根据核心数据模型将系统功能细化,并将数据模型与视图等剥离,细化数据的流向;
  • 依据数据的流向制定模块和接口,完成模块划分;

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进行处理,非常感谢!

上一篇 2017年10月9日
下一篇 2017年10月9日

相关推荐