流程图组件开发
点击次数:
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 左侧图元编辑栏