DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAAbstractNodeLinkGraphicsItem.h
1#ifndef DAABSTRACTNODELINKGRAPHICSITEM_H
2#define DAABSTRACTNODELINKGRAPHICSITEM_H
3#include "DAWorkFlowAPI.h"
4#include <QGraphicsItem>
5#include <QtCore/qglobal.h>
6#include "DANodeLinkPoint.h"
7#include "DAAbstractNode.h"
8#include "DAGraphicsLinkItem.h"
9class QGraphicsSimpleTextItem;
10namespace DA
11{
12class DAAbstractNodeGraphicsItem;
13class DAWorkFlow;
20{
21 Q_OBJECT
22 DA_DECLARE_PRIVATE(DAAbstractNodeLinkGraphicsItem)
23 friend class DAAbstractNodeGraphicsItem;
24
25public:
26 enum AnonymousType
27 {
28 anonymous = DA::ItemType_GraphicsNodeLinkItem
29 };
30 int type() const override
31 {
32 return (anonymous);
33 }
34
35public:
36 DAAbstractNodeLinkGraphicsItem(QGraphicsItem* p = nullptr);
37 DAAbstractNodeLinkGraphicsItem(DAAbstractNodeGraphicsItem* from, const DA::DANodeLinkPoint& pl, QGraphicsItem* p = nullptr);
39 // 自动根据fromitem来更新位置
40 void updatePos();
41
42 // 更新范围参数
43 virtual QRectF updateBoundingRect() override;
44
45 // 通过两个点形成一个矩形,两个点总能形成一个矩形,如果重合,返回一个空矩形
46 static QRectF rectFromTwoPoint(const QPointF& p0, const QPointF& p1);
47
48 // 设置是否显示连接点的文本
49 void setLinkPointNameVisible(bool on = true, Orientations o = OrientationBoth);
50 bool isLinkPointNameVisible(Orientations o = OrientationBoth) const;
51
52 // 设置连接点显示的颜色
53 void setLinkPointNameTextColor(const QColor& c, Orientations o = OrientationBoth);
54 QColor getLinkPointNameTextColor(Orientations o) const;
55
56 // 设置文本和连接点的偏移量,默认为10
57 void setLinkPointNamePositionOffset(int offset, Orientations o = OrientationBoth);
58 int getLinkPointNamePositionOffset(Orientations o) const;
59
60 QGraphicsSimpleTextItem* getFromTextItem() const;
61 QGraphicsSimpleTextItem* getToTextItem() const;
62 // 设置文本
63 void setText(const QString& t);
64 QString getText() const;
65 // 获取文本对应的item
66 QGraphicsSimpleTextItem* getTextItem();
67 // 获取from、to node item,如果没有返回nullptr
68 DAAbstractNodeGraphicsItem* fromNodeItem() const;
69 DAAbstractNodeGraphicsItem* toNodeItem() const;
70 // from、to的连接点
71 DANodeLinkPoint fromNodeLinkPoint() const;
72 DANodeLinkPoint toNodeLinkPoint() const;
73 // 获取from、to的节点,如果没有返回nullptr
74 DAAbstractNode::SharedPointer fromNode() const;
75 DAAbstractNode::SharedPointer toNode() const;
76
77 // 完成节点连接的回调
78 virtual void finishedNodeLink();
79
80 // 在将要结束链接的回调,通过此回调可以执行完成链接后的相关操作,例如判断末端链接的图元,从而实现路径调整
81 // 如果此函数返回false,将代表不接受链接,这时候,结束动作会被跳过,也就是鼠标点击是没有无法结束链接而生成连接线
82 virtual bool willCompleteLink() override;
83 // 生成painterpath
84 virtual QPainterPath generateLinePainterPath(const QPointF& fromPoint,
85 const QPointF& toPoint,
86 LinkLineStyle linestyle = LinkLineStraight) override;
87
88 // 开始节点连接
89 bool attachFrom(DAAbstractNodeGraphicsItem* item, const QString& name);
90 bool attachFrom(DAAbstractNodeGraphicsItem* item, const DANodeLinkPoint& pl);
91 // 清空from节点
92 void detachFrom();
93
94 // 结束节点连接
95 bool attachTo(DAAbstractNodeGraphicsItem* item, const QString& name);
96 bool attachTo(DAAbstractNodeGraphicsItem* item, const DANodeLinkPoint& pl);
97
98 // 清空to节点
99 void detachTo();
100
101 // 已经连接完成,在from和to都有节点时,返回true
102 bool isLinked() const;
103 // 保存到xml中
104 virtual bool saveToXml(QDomDocument* doc, QDomElement* parentElement, const QVersionNumber& ver) const override;
105 virtual bool loadFromXml(const QDomElement* parentElement, const QVersionNumber& ver) override;
106
107protected:
108 //
109 void updateFromLinkPointInfo(const DANodeLinkPoint& pl);
110 void updateToLinkPointInfo(const DANodeLinkPoint& pl);
111 // 添加事件处理
112 QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant& value) override;
113
114 // 连接的item在销毁,销毁过程对应的item会调用此函数,把link记录的item信息消除
115 void callItemIsDestroying(DAAbstractNodeGraphicsItem* item, const DA::DANodeLinkPoint& pl);
116};
117} // end of namespace DA
118
119#endif // FCABSTRACTNODELINKGRAPHICSITEM_H
这是节点的基类,workflow所有节点都继承此类 作为一个节点的QGraphicsItem,此item应该由DAAbstractNode创建
Definition DAAbstractNodeGraphicsItem.h:47
绘制连接线的item
Definition DAAbstractNodeLinkGraphicsItem.h:20
绘制连接线的item
Definition DAGraphicsLinkItem.h:16
Orientations
标记方向
Definition DAGraphicsLinkItem.h:42
LinkLineStyle
连接点的样式
Definition DAGraphicsLinkItem.h:32
用于表征连节点信息的数据
Definition DANodeLinkPoint.h:13
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44