• 5709阅读
  • 3回复

工业自动化软件设计 之七 概说组态软件 [复制链接]

上一主题 下一主题
离线myer
 

只看楼主 倒序阅读 楼主  发表于: 2011-12-31
        马上元旦了,下午无事,继续上次,工作、思路再总结一下。今天先就说说组态软件。
        一般说的GUI组态,就是把预先定义的、系统支持的各种UI元素,以模板、元件、组等格式,在页面上拖拖拉拉、设置属性,最后以某种格式保存起来,然后运行时组件将该文件load进来,辅以适当的脚本支持,完成各种监控功能。
        扩展来说,数据对象的组态、硬件系统的组态、程序处理逻辑的组态等等,在此基础上扩充,都是类似的。
        编写组态软件,UI元素的画法,以及优化,是很难处理的好的。幸运的是,我们有了Qt。
       从Qt3开始,提供的XML+QtCanvas+QSA,已经为编写组态软件提供了基础支持,剩下的就是编写线、矩形、文本、位图、widget等等的逻辑了。从应用来看,XML+QtCanvas+QSA效率已经非常不错,并且QSA脚本也很高效、易用、强大。
        Qt4,提供的QGraphicView+QScript组件,号称效率提高了若干倍,用来编写组态软件,更是得心应手。
        而从Qt的QML组件慢慢普及以后,QML和组态是如此的相像,是否能够用到QML的强大功能呢?要是能用到QML,那么组态软件功能将大大增强,灵活性大大提高,而类似Flickable 、ListModel等等功能是顺手而来,何乐而不为!后面再详述。
        到Qt5,QML已经是主流技术了,已经支持以QML描述的应用程序了,QML+js=应用,这不正是组态软件要实现的吗,用QML这一通用平台来做组态软件更是越来越简单,功能更是越来越强大了。前途是美好的。
       先从基本说起,一个组态软件,除了应用Qt的QGraphicView+QScript外,你需要实现的是一个属性编辑器、各个基本图元例如矩形、文本、位图等等,成组,模板,undo,拖拖拉拉,保存/读取格式,运行态的脚本执行逻辑,当然如果你使用QML,运行态就不用设计了,就这些了,剩余的就是扩充功能了。
        使用Qt的MVC类设计一个属性编辑器是很简单的事情,但是如果设计的好用、易用、易扩展,也并不是那么简单。
        怎样使用现有的QML组件呢,qtcreator提供的设计能力有限,基本的线、连接线、成组等等没有,基于qtcreator扩充qml的设计功能很难,几乎不太好实现。有一个折中的方法,使用GraphicView体系构建编辑态,运行态使用qml组件运行,同时省掉了运行态的脚本处理逻辑。
经使用,效果还是不错的。
       自由报表的设计,基于TextItem,只需扩展处理对报表的编辑功能,例如画报表、分割、合并等,基本逻辑清楚后,实现起来还是很简单的。其它铅笔功能、等等根据需要慢慢扩充就是。
       对于曲线、饼图、等等使用GraphicWidget,刚刚好。一切都是那么简单、完美而有序。
       今天先到这里,祝大家元旦快乐,回头放个demo版本上来大家多多交流。
http://user.qzone.qq.com/56430808
离线xinqingfly

只看该作者 1楼 发表于: 2011-12-31
新年快乐
菜鸟也是鸟
离线begboy

只看该作者 2楼 发表于: 2012-01-01
一直关注楼主该系列。
赞一个!
离线huiliangshiy

只看该作者 3楼 发表于: 2017-08-15
想看看你的demo
快速回复
限100 字节
 
上一个 下一个