董伯麟  (副教授)

硕士生导师

入职时间:2009-07-18

所在单位:合肥工业大学

学历:博士研究生毕业

办公地点:合肥工业大学南区老机械楼112室

性别:男

学位:博士学位

在职信息:在职

毕业院校:合肥工业大学

学科:计算机系统结构
检测技术与自动化装置
机械制造及其自动化

当前位置: 中文主页 >> 教师博客

流程图组件开发

点击次数:

1、图元基类

  首先需要考虑定义一个图元基类,考虑清楚这个,之后的开发与扩展会容易许多。

  从绘制上考虑,图元除线图元外大多可以用矩形涵盖,所以图元基类需要有获取矩形区域的接口,具体获取方式不予考虑;从流程上考虑,每一个图元都需要保存其父类图元与子类图元,所以子类添加,子类删除这类通用的接口可以在基类中实现;父类、子类对象维护在了基类对象中,那么图元数据肯定也需要统一维护,这个时候就需要定义一个图元基类结构体了。


2、结构体基类

  数据相关的结构体基类不可能一下子考虑完全,这里直接展示部分结构体定义,基本为画家绘制时常用的一些属性。


结构体代码如下(示例):


// 图元样式信息

struct FlowchartStyleBase

{

QPen pen_; // 基本画笔样式--背景相关

QBrush brush_; // 基本画刷样式--背景相关

QPen text_pen_; // 文本画笔样式

QFont font_; // 字体样式

FlowchartStyleBase()

{

pen_ = QPen();

pen_.setColor(QColor(65, 113, 156));

pen_.setWidth(1);


brush_ = QBrush(QColor(89, 152, 209));


text_pen_ = QPen();;

text_pen_.setColor(QColor(254, 255, 255));

text_pen_.setWidth(1);


font_ = QFont("Microsoft YaHei", 12, 2);

}

};


// 图元数据信息

struct FlowchartContentBase

{

QString id_; // 图元id

QString content_; // 图元内容

QString tooltip_; // 图元提示信息


FlowchartContentBase()

{

id_ = QUuid::createUuid().toString();

content_ = "Text";

tooltip_ = "Tooltip";

}

};


// 图元结构体基类

struct FlowchartInforBase

{

double position_x_, position_y_, width_, height_;

FlowchartStyleBase item_style_;

FlowchartContentBase item_content_;


FlowchartInforBase()

{

position_x_ = 0.0;

position_y_ = 0.0;

width_ = 160.0;

height_ = 40.0;

item_style_ = FlowchartStyleBase();

item_content_ = FlowchartContentBase();

};

FlowchartInforBase(double _x, double _y, double _width = 160.0, double _height = 40.0)

{

position_x_ = _x;

position_y_ = _y;

width_ = _width;

height_ = _height;

item_style_ = FlowchartStyleBase();

item_content_ = FlowchartContentBase();

};

};


  构思基类需要实现内容后,就可以了解GraphicsView 框架的使用了,根据框架先简单的绘制一个矩形到视口上。。。。。。


3、文件与实现类介绍

软件名称 MXYFlowChart


flowchart_global.h

  主要用来存放全局的一些结构体、枚举、宏定义。


类名 含义

ItemType 图元类型枚举

FlowchartItemType 图元类型结构体

FlowchartCursor 鼠标样式枚举

FlowchartStyleBase 图元样式信息

FlowchartContentBase 图元数据信息

FlowchartStructuralData 图元父子结构关系信息

FlowchartInforBase 图元结构体基类

flowchart_view.h

类名 含义

FlowchartView 视口类

flowchart_scene.h

类名 含义

FlowchartScene 场景类

SceneMode 场景鼠标移动模式枚举

flowchar_graphics_item_base.h

类名 含义

FlowchartGraphicsItem 图元基类

flowchar_graphics_link.h

类名 含义

FlowcharGraphicsLink 连线类

FlowcharGraphicsLinkInfo 连线类结构体

DrawLineAlignment 连线绘制位置枚举

flowchart_graphics_item.h

类名 含义

FlowchartGraphicsRectItem 流程矩形类

FlowchartItemRectInfo 流程矩形类结构体

FlowchartGraphicsConditionItem 判定图元类

FlowchartItemConditionInfo 判定图元类结构体

FlowchartGraphicsCirculationItem 自循环图元类

FlowchartItemCirculationInfo 自循环图元类结构体

flowchar_widget.h

类名 含义

FlowCharWidget 流图图编辑界面

FlowCharToolButtonBar 工具栏

FlowCharToolSideBar 左侧图元编辑栏



上一条: 深度优先搜索算法