基于Graphics View组态仿真框架设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Graphics View组态仿真框架设计

基于Graphics View组态仿真框架设计   [摘要]设计一种基于Qt Graphics View的组态仿真框架。按照Graphics View模块化的设计思路,首先介绍其每个模块的特性,并在此基础上提出组态仿真的设计要素。最后提出控制策略和数据库的设计思路。   [关键词]Qt Graphics View 组态 仿真 控制策略   中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0320043-01      一、引言   随着信息技术和自动化技术的飞速发展,可视化组态软件系统在工程设计、地形勘测、游戏开发等诸多领域都有着广泛的应用。开发一款控制算法高效、功能完善且具有灵活扩展性的组态仿真软件可能是一项十分复杂的工作,但优秀的软件框架无疑是至关重要的。   Qt是一套优秀的跨平台应用程序开发包,自4.2版本开始引入的Graphics View框架对于开发者有很大的吸引力。Graphics View提供基于图元的模型视图设计方式,具备完善的图元管理、碰撞检测、外部事件处理及坐标变换等功能。Graphics View包含三个主要模块,它们分别是场景(Scene)、视图(View)和图元(Item)。下文将从模块的角度,利用Graphics View设计一个通用的组态仿真框架。   二、视图模块   Graphics View的视图模块提供了场景的载体,其实现类为QGraphicsView, 该类继承自QAbstractScrollArea,是一个可滚动的窗口组件。在设计过程中,可以直接利用QGraphicsView的子类作为软件的顶层组件,更常用的方法是将其作为QMainWindow的中心部件,这样可以充分利用QMainWindow的菜单栏和工具栏实现功能的统一化布局和管理。   视口的几何变换功能可以在该模块完成。QGraphicsView类提供了统一的视口变换方法setMatrix,从而将旋转、缩放、平移、仿射等变换统一为矩阵变换。值得注意的是,矩阵变换仅改变场景的显示效果,并不影响实际的图元数据。所有这些功能可以转化成为模块的接口,通过信号槽机制连接用户界面,响应用户操作。   三、场景模块   Graphics View的场景模块主要由QGraphicsScene类来实现。绘图场景模块位于整个组态仿真框架的中间层次:外层有可视化模块QGraphicsView的支持,同时场景也管理着框架最内层次的图元模块、控制着图元的几何变换和渲染、重绘、设置字体和颜色等变换。利用场景可以实现对大量不同类型图元的系统方便的管理。   在仿真框架中,我们将控制逻辑加入到该模块,使其具有控制器的功能。根据软件的具体需求不同,该模块可能执行不同的操作,一般分为以下几类:1.响应各种鼠标和键盘事件,实现对图元的编辑功能;2.响应图元状态改变的事件(包括图元焦点事件、位置改变事件、文字插入事件等);3.通过控制逻辑执行相应的图元处理,并将处理结果反馈给视图模块和相应的图元;4.通过事件广播机制管理场景内各种类型图元的属性。   场景模块中的控制逻辑部分用来定义应用程序在整个场景和图元之上的行为。场景从视图模块获得用户命令,然后传送给控制逻辑执行,对图元进行相应的处理。最后场景模块更新图元数据,并将更新通知给视图模块。实现了三个模块的同步更新。对于控制逻辑的管理可采用策略模式(Strategy Pattern)进行:定义统一的接口,不同的控制算法以不同的方式实现此接口。   四、图元模块   Graphics View框架中的图元是软件中需要管理和编辑的对象。基类QGraphicsItem定义了所有图元类型的共同属性和方法,另外,框架也提供了最常用的几种标准图元,如矩形图元(RectItem)、文本图元(TextItem)、位图图元(PixmapItem)等。在框架的设计过程中,我们可以根据需求继承QGraphicsItem,实现自己的图元类型。在实际应用中,我们常常需要在同一场景中建立大量不同类型的图元对象,对它们的统一管理也可使用策略模式。QGraphicsItem的接口type()可进行图元类型统一识别。   考虑到实际应用中众多的模块类别及数据流格式,对于图形化组态仿真来说,关键是如何建立起反映实际拓扑结构的模块和流程。Graphics View中的图元具有碰撞检测、外部事件响应及相互之间的逻辑关联、定向信息传递等特性,利用这些特性可以很容易地实现组态仿真软件中的数据流动、信息反馈、实时监控等业务逻辑。例如,用户可以根据连线的源图元和目的图元类型及连线方向很容易地判断出相关业务信息。另外,QGraphicsScene通过二叉搜索算法进行图元查找,大大提高了搜索效率,对于业务逻辑

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档