基于Qt的组件化图形平台系统结构
第13章 Qt图形界面程序设计

2018年10月27日
8
程序编译
• 含义:
– – – – lib:生成库文件 subdirs:生成某个目录下的编译指导文件; vcapp:生成vc++支持的可执行程序; vclib:生成vc++支持的库文件。
• 商业软件 • 非商业软件
2018年10月27日
4
Qt简介
• 界面元素的组织:
– 以类继承的结构组织; – 基类:QWidget;
• 事件与事件处理程序的关联:
– 重载已有的事件处理程序;
• 适合于已经存在的事件处理函数
– 利用信号/槽的机制关联信号(事件)和信 号对应的事件。
• 信号(signal)是对象(类)向外界发送的任意 消息、事件,不仅仅是界面元素产生的一般消息 (鼠标、键盘等)。 • 槽(slot)是可以接收消息的特殊函数。
go lcd edit medit MyWidget
– – – –
2018年10月27日
绿色:按钮(QPushButton ) 红色:LCD数码显示(QLCDNumber ) 蓝色:编辑框(QLineEdit ,QMultiLineEdit ) 黄色:自定义界面元素(MyWidget)
12
使用信号/槽的Qt程序示例
口,达到降低开发难度,提高开发效率的目的。
X客户端(应用程序)
X工具包、Gtk+,Qt
X客户端(应用程序)
X工具包、Gtk+,Qt
XLib
XLib
网络协议
X服务器 设备驱动程序
2018年10月27日 2
qt基本组件教学课件.ppt

Qt的组件
Qt- C++图形用户界面库
5.1.2.2 单选按钮的成员
QRadioButton::QRadioButton ( QWidget * parent = 0 ) 构造一个单选按钮的窗口组件,但是该组件没有文本或者图象映 射。parent参数传递给QAbstractButton构造函数。
QRadioButton::QRadioButton ( const QString & text, QWidget * parent = 0 ) 构造一个单选按钮的窗体组件,该组件的参数为parent和text字符 串。
Qt的组件
Qt- C++图形用户界面库
5.1.1.3 推动按钮的实例
该实例的功能,当您按下退出按钮的时候,就会退出系统。 以下是该实例的代码:
/* main.cpp */ #include <qapplication.h> //当窗口初始化的时候,引用的头文件 #include <qpushbutton.h> //定义QPushButton对象,引用的头文件 #include <qobject.h> //需要使用connect函数,引用的头文件 int main(int argc,char **argv) {
/* main.cpp */ #include <qapplication.h> //当窗口初始化的时候,引用的头文件 #include <qpushbutton.h> //定义QPushButton对象,引用的头文件 #include <qobject.h> //需要使用connect函数,引用的头文件 int main(int argc,char **argv) {
Qt图形视图框架三——坐标系统

Qt图形视图框架三——坐标系统⼀基础知识 图形视图框架是基于笛卡尔坐标系统的,⼀个图形项在场景中的位置和⼏何形状由x坐标和y坐标来表⽰。
当使⽤⼀个没有变换的视图来观察场景时,场景中的⼀个单元代表屏幕上的⼀个像素。
图形视图框架的三个坐标系分别是视图坐标系、场景坐标系和图元坐标系。
三个坐标系分别由视图、场景和图元使⽤。
为了⽅便应⽤,图形视图框架中提供了⼀些便捷函数来完成3个坐标系统之间的映射。
当进⾏绘图时,场景坐标对应QPainter的逻辑坐标,视图坐标对应设备坐标。
⽐如在给场景中添加图元时,图元的位置就是相对于场景坐标系⽽⾔的:1.1 场景坐标系 场景坐标系是所有图元对象的绝对坐标. 有四个象限,场景坐标是所有图形项的基础坐标系统。
场景坐标系统描述了每⼀个顶层图形項的位置,也形成了所有从视图传到场景上的事件的基础。
场景坐标的原点在场景的中⼼,x轴正⽅向向右,y轴正⽅向向下。
每⼀个在场景中的图形项除了拥有⼀个图形項的本地坐标和边界矩形外,还都拥有⼀个场景坐标(QGraphicsItem: :scenePos())和⼀个场景中的边界矩形(QGraphicsItem::sceneBoundingRect())。
场景坐标⽤来描述图形项在场景坐标系统中的位置,⽽图形项的场景边界矩形⽤于QGraphicsScene判断场景中的哪些区域进⾏了更改。
常⽤添加图元函数:QGraphicsScene::setBackgroundBrush //填充背景⾊QGraphicsScene::setForegroundBrush //填充前景⾊QGraphicsScene::addSimpleText //添加简单⽂本QGraphicsScene::addLine //添加直线QGraphicsScene::addRect //添加矩形QGraphicsScene::addEllipse //添加椭圆QGraphicsScene::addWidget //添加窗⼝QGraphicsScene::addPixmap //添加图⽚操作图元函数:QGraphicsScene::itemAt //查找场景某个中最表层的itemQGraphicsScene::setSelectionArea //设置选定区域QGraphicsScene::setSceneRect //设置场景的区域⼤⼩QGraphicsScene::itemsBoundingRect //根据所有的item计算区域⼤⼩QGraphicsScene:: selectedItems //获取被选中的item,item必须为可选QGraphicsItem::ItemIsSelectableQGraphicsScene类的坐标系以中⼼为原点(0,0),如下图所⽰。
QT图形视图框架

QT图形视图框架使⽤QPushButton、QLabel、QCheckBox等构成GUI的控件或⾃定义图形时,开发应⽤程序会变得很简单。
但是如果想在GUI中使⽤数⼗个或者数百个图形对象,向⽤户完美展⽰控制场景,则会受到很多的限制。
图形视图框架⽤来管理2D图形项,⽀持绘制、缩放、事件响应等等。
1、快速提供并管理⼤量对象2、将事件传递到每⼀个对象3、管理焦点处理或对象选择等状态图形视图框架是按照MVC设计模式绘图, MVC设计模式包括三个元素:数据的模型(Model),⽤户界⾯的视图(View) ,⽤户再界⾯上的操作控制Controller。
QGraphicsViewQGraphicsView 是为了在场景上显⽰图元⽽提供的类。
QGraphicsView包括可视控件区域和⽤于显⽰⼤场景滚动区域,可以接受⽤户输⼊事件。
QGraphicsView间接继承⾄QWidget。
QGraphicsSceneQGraphicsScene类可以保存图元,也可以处理⽤户输⼊事件。
是图形对象QGraphicsItem的容器,为管理⼤量的items提供⼀个快速的接⼝。
QGraphicsScene只继承⾃QObject,所以本⾝是不可见的,必须通过与之相连的视图类QGraphicsView来显⽰.QGraphicsItemQGraphicsItem是为了在图形视图上实现图形对象⽽提供的类。
⽀持⿏标、键盘、焦点事件,⽀持拖放,在它的基础上可以继承出各种图元类。
⽀持碰撞检测collision detection.1 QGraphicsScene的常⽤函数常⽤添加图元函数QGraphicsScene::setBackgroundBrush //填充背景⾊QGraphicsScene::setForegroundBrush //填充前景⾊QGraphicsScene::addSimpleText //添加简单⽂本QGraphicsScene::addLine //添加直线QGraphicsScene::addRect //添加矩形QGraphicsScene::addEllipse //添加椭圆QGraphicsScene::addWidget //添加窗⼝QGraphicsScene::addPixmap //添加图⽚例如:#include <QApplication>#include <QGraphicsView>#include <QGraphicsRectItem>#include <QLabel>int main(int argc, char** argv){QApplication app(argc, argv);QGraphicsView view;QGraphicsScene scene;view.setScene(&scene);view.show();view.resize(400, 400);/*设置场景的背景⾊前景⾊*/scene.setBackgroundBrush(QBrush(Qt::red));scene.setForegroundBrush(QBrush(QColor(0, 255, 0, 50)));/*添加线*/scene.addLine(0, 0, 100, 100, QPen(Qt::black));/*添加矩形*/scene.addRect(0, 100, 100, 100, QPen(Qt::yellow), QBrush(Qt::blue));/*添加椭圆*/scene.addEllipse(100, 0, 100, 100, QPen(Qt::red), QBrush(Qt::green));/*添加简单⽂本,并且设置⽂本字体,并且描边*/scene.addSimpleText("hello", QFont("system", 40))->setPen(QPen(QBrush(Qt::yellow), 3));/*添加图⽚,并且移动位置*/scene.addPixmap(QPixmap("E:\\qt_workspace\\pic\\wallet.png"))->setPos(200, 200);/*添加⼀个窗⼝*/QLabel label("widget");scene.addWidget(&label);return app.exec();}操作图元函数QGraphicsScene::itemAt //查找场景某个中最表层的itemQGraphicsScene::setSelectionArea //设置选定区域QGraphicsScene::setSceneRect //设置场景的区域⼤⼩QGraphicsScene::itemsBoundingRect //根据所有的item计算区域⼤⼩QGraphicsScene:: selectedItems //获取被选中的item,item必须为可选QGraphicsItem::ItemIsSelectable 2 QGraphicsItem的常⽤函数QGraphicsItem::rect //不带边框的图形区域QGraphicsItem::boundingRect //带边框的图形区域QGraphicsItem::collidesWithItem //碰撞检测QGraphicsItem::setScale //缩放QGraphicsItem::setRotation //旋转QGraphicsItem::setZValue //设置z坐标,图元的叠加先后顺序可以⽤它来设置QGraphicsItem::setPos //设置位置坐标设置item的属性void QGraphicsItem::setFlags(GraphicsItemFlags flags);/**参数GraphicsItemFlags flags 为枚举类型,可以以下值* QGraphicsItem::ItemIsMovable 是否可以移动* QGraphicsItem::ItemIsSelectable 是否可以被选中* QGraphicsItem::ItemIsFocusable 是否可以设置为焦点item*/3 图形视图的坐标系3.1 QGraphscItem图元坐标系图元对象都有⾃⾝的坐标系,坐标系以(0,0)为坐标原点,⾃左向右递增是x轴,⾃上⽽下递增是y轴,⽽且所有图元对象的移动转换作⽤点都是(0, 0),坐标值可以是浮点型数值。
QT图形界面设计

19.2 QT编程
QT Designer与Qmake QT信号与Slot机制
19.2.1 概述
Qt是一套跨平台的图形界面开发平台,最 早由挪威的TrollTech公司于1992年进行 开发。 2008年6月,NOKIA获得了Qt的开发权, 继续对Qt平台进行完成开发。 Qt图形界面开发平台可进行嵌入式系统应 用程序和桌面系统应用程序的开发,支持 Windows、Linux/X11、Mac OS X 等操作系统。
3. 编辑Convert函数
4. 为项目添加主cpp文件
19.3.5 生成Makefile
在终端中使用qmake命令生成Makefile 文件。
19.3.6 编译运行
在终端中,运行make命令编译程序,程序 编译后,可以发现在项目目录中多了一个可 执行文件convertor。
测试一下
信号和槽的使用可以实现信息封装,增加程 序的灵活性。 当槽函数被触发时,说明与其关联的信号被 接收,但他不需要了解谁发出了信号
信号
信号是Qt中对事件的一种抽象,当一个事 件到来时,信号会被发射。 当信号被发射时,与其关联的槽函数会被执 行。
信号的声明形式如下:
signal: void MySignal(); void MySignal(int x); void MySignalParam(int x, int y);
Qt Designer界面
19.2.3 QT信号与Slot机制
Qt中采用了一种全新的对象和动作方法的 关联与通信机制,它被称为信号与槽机制。 信号和槽机制是独立于标准C++编译器的, 在编译之前需要经过Qt的专门预处理工具 MOC(Meta Object Compiler,元组 建编译器)对代码进行预处理后才能后进一 步进行C++代码的编译。 MOC会将Qt应用程序中特有的代码自动转 化为相应的标准C++语法代码。
基于Qt的EMS图形系统的研究

基于Qt的EMS图形系统的研究汪小闯,任远,朱晓松,蔡晖(国电南瑞科技股份有限公司,江苏省南京市210003)摘要:EMS是一个复杂的综合的电力系统,图形系统是EMS支撑系统的重要组成部分。
文中提出了一种基于Qt图形库、支持多平台开发的图形系统的设计方案。
通过实践证明,该方案是切实可行的。
关键词:能量管理系统;图形用户界面;C++;Qt;跨平台0 引言电力系统调度自动化对于电力系统的有效安全运行非常重要。
能量管理系统EMS(Energy Management System)就是其中的一个复杂的综合的大型电力系统软件,包括数据采集与监控(SCADA)、自动发电控制(AGC)、前置系统(FES)、高级应用(PAS)以及调度员培训模拟(DTS)等功能。
操作系统的发展,面对对象技术的出现,以及电力系统国际标准IEC 61970的制定,都给EMS的发展提供了更广阔的空间,其相应的发展也迫在眉睫。
用户选择的硬件从PC到高端服务器,操作系统有Windows、Unix和Linux,用户要求的不断提高,都迫切要求现在的EMS系统进行升级革新来适应市场的需求。
现在的自动化系统基本都是采用图形用户界面(Graphical User Interface,简称GUI),选择一个合适的图形库对系统至关重要。
图形系统的好坏直接影响了EMS上高级应用软件的开发及整个系统的成败[1]。
Qt是一个完全的面向对象语言C++编写的图形库,在不同平台上使用的函数库都完全相同,适合开发跨平台的应用程序。
1 相关技术分析1.1 硬件和操作系统目前在我们国家的电力应用上,主流的硬件有IBM、SUN、HP等厂商提供的Unix服务器和工作站以及各种PC等;操作系统主要有HP Tru64、Solaris、AIX、HP-UX、Linux以及各种Windows的版本。
由于各种硬件及操作系统的不同,实现相同的功能则需要编写不同的代码,工作量大、可维护性差。
QT图形视图框架(The Graphics View Framework)

管理 widgets 在图形视图中的布局 在 QGraphicsScene 中所有图形对象的基 类 为 QGraphicsItem 提供简单的 动画支持 将多个图形对象组合成一个对象 图形视图中所有布局类的基类 允许布局类管理的自定义对象 直线对象,可以直接添加到 QGraphicsScene 管理 widgets 在图形视图中的的水平或者 垂直方向上的布局 所有需要处理信号 /槽 /属性的图形对象。 路径对象,可以直接添加到 QGraphicsScene 位图对象,可以直接添加到 QGraphicsScene 多边形对象,可以直接添加到 QGraphicsScene widget 代理,用于将一个 QWidget 对象嵌 入 一个 QGraphicsScene 中 矩形对象,可以直接添加到 QGraphicsScene 管理大量二维图形对象的管理器
• • • • •
鼠标按下、移动、释放和双击事件,同时还支持鼠标悬浮事件、滚轮事件和上下文菜单事件。 键盘输入焦点和键盘事件。 拖放。 组合:通过父对象 -子对象进行组合,或者通过 QGraphicsItemGroup 组合。 碰撞检测。
与 QGraphicsView 类似,处于局部坐标系下的图形对象,也提供了图形对象和场景之间的映射函数。 和 QGraphicsView 一样,图形对象同时还可以通过矩阵来变换其自身的坐标系统,这一点对于单个 图形对象的旋转和缩放非常有用。 图形视图架构 个图形对象可以包含其他对象(子对象)。父对象的变换矩阵同样也会应用到子对象上。但是,不管一 个对象累积了多少变换, QGraphicsItem::collidesWith()仍然会在局部坐标系下进行计算。
图形视图框架
The Graphics View Framework
qt基本组件2

Qt的组件
Qt- C++图形用户界面库
5.2 标签
5.2.1 QLabel
5.2.1.1 QLabel的描述
QLabel窗口部件提供了显示文本或者图象,没有提供用户的交互 功能。因为标签的外观可以通过各种各样的方式来配置,而且它可以为 指定焦点记忆键到另外的窗体上。
QLabel提供了以下内容类型: 设置无格式的文本:可以通过setText()函数来设置,它将接收到 Qstring传递给它的文本信息。 设置大量的文本:可以通过setText()函数来设置,它将接收到 QString传递给它的大量信息。
该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。标 签中有下划线的字母(在此它的前面用“&”标明)表明快捷键,比如: QPushButton *pushbutton = new QPushButton("&Help", this); 这个实例中快捷键是Alt+H,并且文本标签将被显示为Help。
Qt的组件
Qt- C++图形用户界面库
5.1.3.2 复选按钮的成员
QCheckBox::QCheckBox ( QWidget * parent = 0 ) 构造一个参数为parent的复选按钮,但是该按钮不显示文本信息。 parent参数传递给QAbstractButton构造函数。 QCheckBox::QCheckBox ( const QString & text, QWidget * parent =0) 构造一个参数为parent和text的复选按钮。parent参数传递给 QAbstractButton构造函数。
注意:您可以传递一个QPixmap作为一个图标(感谢由C++提供的隐含类 型转换)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
组件化通用图形平台EISGraphex 编写:胡剑锋 审核:沈全荣 批准:陈松林
南京南瑞继保电气有限公司 2005年9月 组件化通用图形平台介绍 1.概述 组件化通用图形平台(EISGraphex)是一套图形类应用的支撑平台的核心库,提供对各种类型组件的管理和扩展、各种窗口的管理、消息机制、脚本管理、数据管理等机制,来提供满足有图形界面需求的开发支持,使得图形界面开发的统一性、一致性、扩展性。平台提供一套二次应用建模工具,可用来创建各种图形应用界面的系统,该系统不仅可以绘制一般的画面,还能用来搭建各种形式的窗体应用,如:框架窗体、普通窗体、对话框和弹出菜。 组件化通用图形平台的特点如下: 组件化。该方法保证一切都以组件的形式存在,使用时只要将各种组件组织一番就可搭建形成一个非常漂亮的GUI应用系统,所以系统的使用也因此变得很方便。还有就是组件化方法还有效地增强了功能模块的复用性,应用建模人员只要一次建模,就可以多次使用,大大减少了某些不必要的重复劳动,如:各种图形复合组件等。 二次开发。图形平台是一个开发环境,支持快速开发一个应用系统,提供模型的解释执行和编译执行,便于调试和发布。 可视化。提供可视化方式实现多种窗口建模,数据建模,所见即所得。 较强的可扩展性。可扩展性一方面是指平台的脚本支持功能,应用建模人员可以使用脚本语言任意扩充自己所需要的界面功能。另一方面主要表现在各种组件模型的扩充,尤其是各种应用所需的图形复合组件,用户可以利用平台工具任意创建各种应用性质的复合组件。 跨平台。采用C++和Qt开发,跨Sun Solaris和Windows等主流操作系统 其它优点,如:可靠性好、简单易用等,这里就不一一列出了。 当然,由于平台的定位相对较高,使用该系统需要用户具备一些基本的编程知识和技能,主要在脚本开发和应用接口组件创建时使用。
2.系统总体架构 组件化通用图形平台的主要目的是为各种具体的应用搭建和定制用户界面,支持工程维护人员和最终用户迅速便捷地创建复杂的、强大的、符合自己习惯的操作员界面显示。 组件化通用图形平台是一个建模、组织、运行与图形界面相关的软件系统,包括GUI应用容器、工具集(数据建模工具、图形组件构建工具、GUI应用界面构建容器)、基本组件库、脚本和应用编程接口等。 构成一个GUI应用的基本实体要素是窗口、组件、公共数据和脚本,而这些要素分别由窗口管理、窗口、数据字典、脚本容器进行管理,这四个部分又可通过数据总线相互发生关系。所有这些元素均包含在GUI应用容器中进行解释运行。 组件包含功能组件、应用接口组件和图形组件。功能组件用于实现某一特定、复杂的功能(如画面编辑组件、报表制作组件、GIS组件等);应用接口组件用于同后台应用系统进行数据通讯、数据类型转换等其他同具体应用关联的功能,应用接口组件主要由GUI应用开发人员通过编写代码实现;图形组件用于表现整个GUI应用的界面。 公共数据包含基本数据类型、复合数据类型、数据容器类型和数据对象树。复合数据由基本数据构成,数据容器用于管理某一类型的基本数据或复合数据,数据对象树表示了数据对象和数据容器之间的层次关系。公共数据的类型和对象由数据字典来实现管理。 脚本包含组件脚本、窗口脚本、GUI应用脚本、全局脚本和系统函数。脚本的实体都包含在容器中。
后台应用系统应用接口组件
窗口容器图形组件窗口对象
数据字典基本数据对象1复合数据对象1数据容器1
存放数据类型1数据对象
基本数据对象n复合数据对象n数据容器n
存放数据类型n数据对象
数据总线应用通讯接口
数据建模工具
图形组件建模工具脚本容器系统函数快速脚本窗口脚本组件脚本GUI应用脚本GUI应用建模工具GUI应用运行容器数据类型管理窗口模版
)功能组件(有窗口
)功能组件(无窗口 树对象
图1 系统结构图 3图形平台开发库 3.1平台支持类库 系统支持类是支持系统运行的一些基本库,共提供6个动态连接库。 ※ 基本类库 方式:动态连接库 输出类: 基本组件类(RBaseComponent):是所有组件的基类。 功能组件类(RFunComponent):作为功能组件输出的接口类。是功能组件在图形平台的代表。 应用接口组件类(RAppComponent):作为应用接口组件输出的接口类。是应用接口组件在图形平台的代表。派生于基本组件类。 图形组件类(RGraphComponent):是所有图形组件的基类。 数据总线(RDataBus):数据总线的管理类。用于实现消息的分发、处理。 公共数据基类(RDataObject):是所有公共数据的基本类,提供标准的设置、读取等服务。 BOOL数据基类(RDataBool):图形平台提供的布尔型数据类型。 INT数据基类(RDataInt):图形平台提供的整型数据类型。 BYTE数据基类(RDataByte):图形平台提供的字节型数据类型。 FLOAT数据基类(RDataFloat):图形平台提供的浮点型数据类型。 COLOR数据基类(RDataColor):图形平台提供的颜色型数据类型。 容器数据基类(RDataList):图形平台提供的容器型数据类型。 树型数据基类(RDataTree):图形平台提供的树型数据类型。 数据对象管理类(RDataManage:同数据类型管理动态连接库一起构成数据字典。提供公共数据对象的管理,包括创建、删除和检索;其中创建方法的实现如下:首先判断要创建的是否基本数据或基本数据容器,若是,则直接new一个对应类型的对象,若否,则调用数据类型管理库的接口函数来创建一个对象,然后把得到的新对象加入到管理队列中,并把对象加入到QSA中。
※ 数据类型管理库 方式:动态连接库。在数据建模后自动更新该动态库。 输出类:数据类型管理类:实现数据类型的管理。向数据对象管理类提供创建复合数据和复合数据容器对象的方法;提供数据类型读目录方法;在初始化时,负责把数据字典内的所有数据类型加入到QSA中,最初的动态库中不含任何数据类型。
※ 组件类库 方式:动态连接库。 输出类: 基本图符类:一系列的基本图符类。包括线类、填充类、图片类等。 界面组件类:一系列的窗口界面组件。包括按钮类、框架类等 复合组件代表类:用于描述复合组件的类。 框架窗口类:实现框架窗口。 普通窗口类:实现带滚动条的窗口。 对话框类: 实现对话框。 弹出菜单类:实现弹出菜单。
※ 文件解析库 方式:动态连接库。 输出类: APM文件解析类:提供对APM文件的读取和保存。 WPM文件解析类:提供对WPM文件的读取和保存。 GPM文件解析类:提供对GPM文件的读取和保存。 DPM文件解析类:提供对DPM文件的读取和保存。 解析过程中包括实体对象的创建,通过调用以上的动态库输出函数实现。
※ 窗口组件管理库 方式:动态连接库 输出类: 窗口对象管理类:提供对窗口对象的管理。 窗口模板管理类:提供对窗口模板(包括基本窗口模板和应用窗口模板)的管理。 图形组件对象管理类:提供对图形组件对象的管理。 图形组件模板管理类:提供对图形组件模板的管理。 功能组件对象管理类:提供对功能组件对象的管理。 应用接口组件对象管理类:提供对应用接口组件对象的管理。 文件下载管理类(WEB服务端):提供WEB上文件的传输。 文件下载客户端类(WEB客户端):提供WEB上文件的传输。 枚举库管理类:提供对枚举数据的访问。
※ 脚本管理库 方式:动态连接库 输出类: 脚本函数类:提供QSA文件的管理、脚本函数的管理、检索。 系统函数类:提供一系列的系统函数调用。 。。。 该类库封装了所有的QSA类库。
※ guid跨平台生成器 方式:动态连接库 输出接口: CreateGuid(),输出一个全球唯一的标识ID。
3.2关键功能组件 功能组件是在图形平台的使用中,逐步积累的。但对于某些功能组件,平台必须在最初就提供。其中包括: ※ 画面编辑功能组件:带窗口的功能组件,实现画面编辑功能。提供一个WorkSpace作为其本身的主窗口,在其上创建一块块编辑画布。即可支持多文档的编辑。 ※ 组件选择组件:带窗口的功能组件,实现组件选择、浏览等功能。 ※ 定时功能组件:不带窗口的功能组件,产生各种定时事件。 所有的功能组件均输出一个RfunComponent的派生类,作为在图形平台的代表。
3.3开发工具 ※ 数据建模工具: 方式:exe运行程序 功能:用于复合数据模型的建立,每次更新,都将自动编译生成数据类型管理库。 ※ 组件建模工具: 方式:exe运行程序 功能:复合图形组件的建模。 ※ 工程组件管理工具: 方式:exe运行程序 功能:是组件建模工具的简化版。 ※ GUI应用建模工具: 方式:exe运行程序 功能:用于构建GUI应用模型的工具。 ※ 本节点GUI应用管理工具: 方式:exe运行程序 功能:用于管理本节点内所有的GUI应用模型。 ※ 部署工具: 方式:exe运行程序 功能:1,把组件库、基本窗口模板库进行打包成一个自解压的程序; 2,把GUI应用答包,(可以选择是否把平台的公用库一起打包)。
4二次开发过程 4.1基于平台开发的应用系统的结构 一个复杂的多进程的应用系统需要多个应用模型,每个应用模型作为一个独立进程运行。如下图所示:
其中,单个应用模型的结构一般包括如下几个部分: • 窗口 - 展示给用户的界面 • 全局数据 – 暂态数据,中间数据 • 消息管理 – 消息增删改,发送和接受定义 • 脚本 – 事件处理,消息处理