DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAGraphicsCommandsFactory.h
1#ifndef DAGRAPHICSCOMMANDSFACTORY_H
2#define DAGRAPHICSCOMMANDSFACTORY_H
3#include "DAGraphicsViewGlobal.h"
4#include "DACommandsForGraphics.h"
5class QGraphicsSceneMouseEvent;
6class sceneMouseMoveEvent;
7class sceneMouseReleaseEvent;
8namespace DA
9{
10class DAGraphicsScene;
11class DAGraphicsResizeableItem;
20class DAGRAPHICSVIEW_API DAGraphicsCommandsFactory
21{
22 friend class DAGraphicsScene;
23 DA_DECLARE_PRIVATE(DAGraphicsCommandsFactory)
24public:
27 virtual DACommandsForGraphicsItemAdd* createItemAdd(QGraphicsItem* item);
28 virtual DACommandsForGraphicsItemsAdd* createItemsAdd(const QList< QGraphicsItem* > its);
29 virtual DACommandsForGraphicsItemRemove* createItemRemove(QGraphicsItem* item, QUndoCommand* parent = nullptr);
30 virtual DACommandsForGraphicsItemsRemove* createItemsRemove(const QList< QGraphicsItem* > its);
31 virtual DACommandsForGraphicsItemMoved* createItemMoved(QGraphicsItem* item,
32 const QPointF& start,
33 const QPointF& end,
34 bool skipfirst);
35 virtual DACommandsForGraphicsItemsMoved* createItemsMoved(const QList< QGraphicsItem* >& items,
36 const QList< QPointF >& starts,
37 const QList< QPointF >& ends,
38 bool skipfirst);
39 // 这个命令主要针对场景鼠标移动item进行设置
40 virtual DACommandsForGraphicsItemsMoved* createItemsMoved();
41 virtual DACommandsForGraphicsItemResized* createItemResized(DAGraphicsResizeableItem* item,
42 const QPointF& oldpos,
43 const QSizeF& oldSize,
44 const QPointF& newpos,
45 const QSizeF& newSize,
46 bool skipfirst = true);
47 virtual DACommandsForGraphicsItemResized* createItemResized(DAGraphicsResizeableItem* item,
48 const QSizeF& oldSize,
49 const QSizeF& newSize);
50 virtual DACommandsForGraphicsItemResizeWidth* createItemResizeWidth(DAGraphicsResizeableItem* item,
51 const qreal& oldWidth,
52 const qreal& newWidth);
53 virtual DACommandsForGraphicsItemResizeHeight* createItemResizeHeight(DAGraphicsResizeableItem* item,
54 const qreal& oldHeight,
55 const qreal& newHeight);
56 virtual DACommandsForGraphicsItemRotation* createItemRotation(DAGraphicsResizeableItem* item,
57 const qreal& oldRotation,
58 const qreal& newRotation);
59 virtual DACommandsForGraphicsItemGrouping* createItemGrouping(const QList< QGraphicsItem* >& groupingitems);
60 virtual DACommandsForGraphicsItemUngrouping* createItemUngrouping(QGraphicsItemGroup* group);
61 DAGraphicsScene* scene() const;
62
63protected:
64 //=========================
74 //==========================
75 // 鼠标点击事件
76 virtual void sceneMousePressEvent(QGraphicsSceneMouseEvent* mouseEvent);
77 // 鼠标移动事件
78 virtual void sceneMouseMoveEvent(QGraphicsSceneMouseEvent* mouseEvent);
79 // 鼠标释放
80 virtual void sceneMouseReleaseEvent(QGraphicsSceneMouseEvent* mouseEvent);
81
82 // 记录场景鼠标左键按下的位置
83 QPointF sceneMousePressPos() const;
84 // 这是记录scene移动鼠标时记录的移动的item,这个函数仅仅在DACommandsForGraphicsItemsMoved* createItemsMoved(QGraphicsSceneMouseEvent* mouseReleaseEEvent);使用
85 const QList< std::pair< QGraphicsItem*, QPointF > >& movingItemsStartPos() const;
86 const QList< std::pair< QGraphicsItem*, QPointF > >& movingItemsEndPos() const;
87 // 标记是否完成了一个完整的鼠标移动元件周期,所谓完整的鼠标移动元件周期,是指鼠标按下并选择了元件,同时鼠标拖动让元件形成位移,最后再松开鼠标
88 bool isMouseMovementCycleComplete() const;
89 // 是否开始进入了移动状态
90 bool isBeginMovingItems() const;
91 // 重置鼠标移动的循环状态,这个函数是重写sceneMouseReleaseEvent等函数时要重置状态用
92 void resetMouseMovementCycleState();
93
94protected:
95 void setScene(DAGraphicsScene* s);
96};
97} // end DA
98#endif // DAGRAPHICSVIEWCOMMANDSFACTORY_H
添加item命令
Definition DACommandsForGraphics.h:30
分组命令
Definition DACommandsForGraphics.h:272
移动item命令,必须先确保item是movable的
Definition DACommandsForGraphics.h:146
移除item命令
Definition DACommandsForGraphics.h:74
改变高度
Definition DACommandsForGraphics.h:225
仅改变宽度
Definition DACommandsForGraphics.h:202
item改变尺寸
Definition DACommandsForGraphics.h:170
旋转
Definition DACommandsForGraphics.h:250
解除分组命令
Definition DACommandsForGraphics.h:301
添加item命令
Definition DACommandsForGraphics.h:53
移动item命令,必须先确保item是movable的
Definition DACommandsForGraphics.h:116
移除items命令
Definition DACommandsForGraphics.h:95
命令工厂
Definition DAGraphicsCommandsFactory.h:21
用于调整大小的item
Definition DAGraphicsResizeableItem.h:48
这是带着undostack的GraphicsScene 此QGraphicsScene支持:
Definition DAGraphicsScene.h:30
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44