DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAWorkFlowGraphicsView.h
1#ifndef DAWORKFLOWGRAPHICSVIEW_H
2#define DAWORKFLOWGRAPHICSVIEW_H
3#include <QtCore/qglobal.h>
4#include <QPointer>
5#include <QUndoStack>
6#include "DAGuiAPI.h"
7#include "DAGraphicsView.h"
8#include "DAGraphicsItem.h"
9#include "DAAbstractNodeWidget.h"
10
11class QDragEnterEvent;
12class QDragMoveEvent;
13class QDragLeaveEvent;
14class QDropEvent;
15
16namespace DA
17{
18class DAWorkFlowGraphicsScene;
19class DADataWorkFlow;
23class DAGUI_API DAWorkFlowGraphicsView : public DAGraphicsView
24{
25 Q_OBJECT
26 DA_DECLARE_PRIVATE(DAWorkFlowGraphicsView)
27public:
28 DAWorkFlowGraphicsView(QWidget* parent = 0);
29 DAWorkFlowGraphicsView(QGraphicsScene* scene, QWidget* parent = 0);
31 void setWorkFlow(DAWorkFlow* wf);
32 DAWorkFlow* getWorkflow();
33 // 激活UndoStack
34 void setUndoStackActive();
35 QUndoStack* getUndoStack();
36 DAWorkFlowGraphicsScene* getWorkFlowGraphicsScene();
37 // 获取当前view视图下的scene中心
38 QPointF getViewCenterMapToScene() const;
39 // 把item移动到屏幕中心
40 void moveItemToViewCenter(QGraphicsItem* item);
41 // 复制当前选中的items
42 bool copySelectItems();
43 // 复制到剪切板
44 void copyItems(const QList< DAGraphicsItem* >& its, bool isCopy = true);
45 // 复制当前选中的items
46 void cutSelectItems();
47 // 粘贴,会发射pastedItems信号
48 QList< QGraphicsItem* > paste();
49 // 粘贴到视图中心
50 void pasteToViewCenter();
51 // 粘贴,同时偏移一个距离
52 void pasteByOffset(const QPointF& offset);
53 // 设置item的选中状态
54 void setSelectionState(const QList< QGraphicsItem* >& items, bool isSelect);
55 // 取消选中
56 void clearSelection();
57 // 全选
58 void selectAll();
59 // 计算item所包含的范围,这个范围存入xml中,以便让scene第一时间知道总体范围
60 static QRectF calcItemsSceneRange(const QList< QGraphicsItem* >& its);
61 //
62 static QList< QGraphicsItem* > cast(const QList< DAGraphicsItem* >& its);
63 // 所有item偏移一个距离
64 void offsetItems(const QList< QGraphicsItem* >& its, const QPointF& offset);
65 // 通过node元对象创建工作流节点
66 DAAbstractNodeGraphicsItem* createNode(const DANodeMetaData& md, const QPoint& pos);
67 DAAbstractNodeGraphicsItem* createNode_(const DANodeMetaData& md, const QPoint& pos);
68
69signals:
70
75 void nodeItemDeleted(const QList< QGraphicsItem* >& items);
76
84 void pastedItems(const QList< QGraphicsItem* >& items);
85
86protected:
87 virtual void mouseMoveEvent(QMouseEvent* event) override;
88 virtual void mousePressEvent(QMouseEvent* event) override;
89 virtual void mouseReleaseEvent(QMouseEvent* event) override;
90 virtual void keyPressEvent(QKeyEvent* event) override;
91 virtual void keyReleaseEvent(QKeyEvent* event) override;
92
93 virtual void dragEnterEvent(QDragEnterEvent* event) override;
94 virtual void dragMoveEvent(QDragMoveEvent* event) override;
95 virtual void dragLeaveEvent(QDragLeaveEvent* event) override;
96 virtual void dropEvent(QDropEvent* event) override;
97
98private:
99 void resetCursor();
100};
101
102} // namespace DA
103#endif // GNODEGRAPHICSVIEW_H
这是节点的基类,workflow所有节点都继承此类 作为一个节点的QGraphicsItem,此item应该由DAAbstractNode创建
Definition DAAbstractNodeGraphicsItem.h:47
支持缩放和拖动的GraphicsView
Definition DAGraphicsView.h:22
保存节点元数据 节点元数据由工厂进行管理
Definition DANodeMetaData.h:16
The DAWorkFlowGraphicsScene class
Definition DAWorkFlowGraphicsScene.h:18
用于节点显示的GraphicsView
Definition DAWorkFlowGraphicsView.h:24
void nodeItemDeleted(const QList< QGraphicsItem * > &items)
节点删除
void pastedItems(const QList< QGraphicsItem * > &items)
粘贴触发的信号
基本的工作流,这个也是总工厂,汇总了所有插件的工厂
Definition DAWorkFlow.h:21
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44