|
DAWorkbench 0.0.1
DAWorkbench API
|
DAAbstractNodeGraphicsItem对应的QGraphicsScene,通过此scene,管理DAWorkFlow内容 更多...
#include <DANodeGraphicsScene.h>
类 | |
| class | PrivateData |
信号 | |
| void | nodeItemLinkPointSelected (DA::DAAbstractNodeGraphicsItem *item, const DA::DANodeLinkPoint &lp, QGraphicsSceneMouseEvent *event) |
| 节点的连接点被选中触发的信号 | |
| void | nodeLinkItemIsEmpty (DA::DAAbstractNodeLinkGraphicsItem *link) |
| 说明link已经为空,这时会自动remove | |
| void | selectNodeItemChanged (DA::DAAbstractNodeGraphicsItem *item) |
| 选中了某个节点的设置窗口 | |
| void | selectNodeLinkChanged (DA::DAAbstractNodeLinkGraphicsItem *link) |
| 选中了某个节点的设置窗口 | |
| void | nodeItemsRemoved (const QList< DA::DAAbstractNodeGraphicsItem * > &items) |
| 节点被移除 | |
| void | nodeLinksRemoved (const QList< DA::DAAbstractNodeLinkGraphicsItem * > &items) |
| 连接线被移除 | |
信号 继承自 DA::DAGraphicsScene | |
| void | itemsPositionChanged (const QList< QGraphicsItem * > &items, const QList< QPointF > &oldPos, const QList< QPointF > &newPos) |
| item移动发射的信号 | |
| void | itemBodySizeChanged (DAGraphicsResizeableItem *item, const QSizeF &oldSize, const QSizeF &newSize) |
| 条目bodysize改变触发的信号 | |
| void | itemRotationChanged (DAGraphicsResizeableItem *item, const qreal &rotation) |
| item旋转发出的信号 | |
| void | linkCompleted (DAGraphicsLinkItem *linkItem) |
| 完成了一次链接 | |
| void | selectItemChanged (DAGraphicsItem *item) |
| 选中的item发生了变化,注意,选中的如果是分组,会检查分组内部的item的点击,最终也是发送被点击的item | |
| void | selectLinkChanged (DAGraphicsLinkItem *item) |
| 选中的链接线发生了改变 | |
| void | itemsAdded (const QList< QGraphicsItem * > &its) |
| item添加的信号 | |
| void | itemsRemoved (const QList< QGraphicsItem * > &its) |
| item移除的信号 | |
| void | sceneActionActived (DA::DAAbstractGraphicsSceneAction *act) |
| 一个场景动作被激活的信号 | |
| void | sceneActionDeactived (DA::DAAbstractGraphicsSceneAction *act) |
| 一个场景动作已经解除激活的信号 | |
Public 成员函数 | |
| DANodeGraphicsScene (QObject *p=nullptr) | |
| DANodeGraphicsScene | |
| DANodeGraphicsScene (const QRectF &sceneRect, QObject *p=nullptr) | |
| DANodeGraphicsScene (qreal x, qreal y, qreal width, qreal height, QObject *p=nullptr) | |
| virtual void | cancelLink () override |
| 取消链接,如果此时没在进行链接,不做处理 | |
| void | setWorkFlow (DAWorkFlow *wf) |
| 设置工作流 | |
| DAWorkFlow * | getWorkflow () |
| 获取工作流 | |
| DAAbstractNodeGraphicsItem * | findItemByNode (DAAbstractNode *n) |
| 通过node找到item | |
| DAAbstractNodeGraphicsItem * | getSelectedNodeGraphicsItem () const |
| 获取选中的NodeGraphicsItem,如果没有返回nullptr,如果选中多个,返回第一个 | |
| QList< DAAbstractNodeGraphicsItem * > | getNodeGraphicsItems () const |
| 获取所有的NodeGraphicsItems | |
| QList< DAGraphicsStandardTextItem * > | getTextGraphicsItems () const |
| 获取所有的文本 | |
| QList< DAAbstractNodeGraphicsItem * > | getSelectedNodeGraphicsItems () const |
| 获取选中的NodeGraphicsItem,如果没有返回一个空list | |
| DAAbstractNodeLinkGraphicsItem * | getSelectedNodeLinkGraphicsItem () const |
| 获取选中的NodeLinkGraphicsItem,如果没有返回nullptr,如果选中多个,返回第一个 | |
| QList< DAAbstractNodeLinkGraphicsItem * > | getSelectedNodeLinkGraphicsItems () const |
| QList< QGraphicsItem * > | getGraphicsItemsWithoutLink () const |
| 获取除了连接线以外的item | |
| int | removeSelectedItems_ () |
| 删除选中的item,此函数支持redo/undo | |
| void | removeNodeItem_ (DAAbstractNodeGraphicsItem *i) |
| void | addNodeItem_ (DAAbstractNodeGraphicsItem *i) |
| void | addNodeLink_ (DAAbstractNodeLinkGraphicsItem *link) |
| DAAbstractNodeGraphicsItem * | createNode (const DANodeMetaData &md, const QPointF &pos, bool addItemToScene=true) |
| 创建节点(不带回退功能) | |
| DAAbstractNodeGraphicsItem * | createNode_ (const DANodeMetaData &md, const QPointF &pos) |
| 通过node元对象创建工作流节点 | |
| DAGraphicsPixmapItem * | addPixmapItem_ (const QImage &img) |
| 添加一个图片item | |
| DAAbstractNodeGraphicsItem * | nodeItemAt (const QPointF &scenePos) const |
| 通过位置获取DAAbstractNodeGraphicsItem | |
Public 成员函数 继承自 DA::DAGraphicsScene | |
| DAGraphicsScene (QObject *p=nullptr) | |
| DAGraphicsScene (const QRectF &sceneRect, QObject *p=nullptr) | |
| DAGraphicsScene (qreal x, qreal y, qreal width, qreal height, QObject *p=nullptr) | |
| QPointF | getCurrentMouseScenePos () const |
| 获取当前鼠标在scene的位置 | |
| QPointF | getLastMousePressScenePos () const |
| 获取最后鼠标在scene点击的位置 | |
| QList< QGraphicsItem * > | getSelectedMovableItems () |
| 获取选中且能移动的item | |
| QUndoCommand * | addItem_ (QGraphicsItem *item) |
| 等同additem,但使用redo/undo来添加,可以进行redo/undo操作 | |
| QUndoCommand * | addItems_ (const QList< QGraphicsItem * > &its) |
| 等同多次additem,但使用redo/undo来添加,可以进行redo/undo操作 | |
| QUndoCommand * | removeItem_ (QGraphicsItem *item) |
| 等同removeItem,但使用redo/undo来添加,可以进行redo/undo操作 | |
| QUndoCommand * | removeItems_ (const QList< QGraphicsItem * > &its) |
| QPixmap | toPixamp (int dpi=0) |
| 导出为pixmap | |
| QImage | toImage (int dpi=0) |
| 转换为设备相关的图片 | |
| void | beginLink (DAGraphicsLinkItem *linkItem, LinkMode lm=LinkModeAutoStartEndFollowMouseClick) |
| 开始链接模式 | |
| bool | isStartLink () const |
| 判断当前是否是链接模式 | |
| void | endLink () |
| 结束链接模式 | |
| virtual void | cancel () |
| DAGraphicsLinkItem * | getCurrentLinkItem () const |
| 获取当前正在进行连线的连接线item | |
| void | setIgnoreLinkEvent (bool on) |
| 设置忽略链接事件的处理,主要忽略mousePressEvent,mouseMoveEvent的链接事件 | |
| bool | isIgnoreLinkEvent () const |
| 判断当前是否忽略链接事件 | |
| void | groupingSelectItems_ () |
| 对选中item的分组 | |
| void | removeSelectItemGroup_ () |
| 移除选中的分组 | |
| bool | isEnableSnapToGrid () const |
| 是否允许对齐网格 | |
| bool | isShowGridLine () |
| 是否显示网格线 | |
| void | setGridSize (const QSize &gs) |
| 设置网格尺寸 | |
| QSize | getGridSize () const |
| 网格尺寸 | |
| void | setGridLinePen (const QPen &p) |
| 设置网格画笔 | |
| QPen | getGridLinePen () const |
| 获取网格画笔 | |
| void | setPaintBackgroundInCache (bool on) |
| 设置绘制背景使用缓冲 | |
| bool | isPaintBackgroundInCache () const |
| 是否绘制背景使用缓冲 | |
| QUndoStack & | undoStack () |
| 获取DANodeGraphicsScene内部维护的undoStack | |
| const QUndoStack & | undoStack () const |
| QUndoStack * | getUndoStack () const |
| 获取undostack指针 | |
| void | setUndoStackActive () |
| 在StackGroup中激活undoStack | |
| void | push (QUndoCommand *cmd) |
| 等同s->undoStack().push(cmd); | |
| QGraphicsItem * | findItemByID (uint64_t id, bool recursion=false) const |
| 通过id查找item,此函数性能为O(n) | |
| QList< QGraphicsItem * > | topItems () const |
| QList< QGraphicsItem * > | topItems (const QPointF &scenePos) const |
| QList< DAGraphicsItem * > | selectedDAItems () const |
| 获取选中的da item | |
| void | setReady (bool on) |
| 设置场景就绪 | |
| bool | isReady () const |
| 场景是否就绪 | |
| bool | isHaveSceneAction () const |
| 判断当前是否存在场景动作 | |
| QList< DAGraphicsLayout * > | getLayouts () const |
| 获取所有图层 | |
| bool | isReadOnly () const |
| DAGraphicsTextItem * | createText_ (const QString &str=QString()) |
| 创建并加入一个文本框 | |
| DAGraphicsRectItem * | createRect_ (const QPointF &p=QPointF()) |
| 在画布中创建一个矩形 | |
| void | registCommandsFactory (DAGraphicsCommandsFactory *fac) |
| 注册命令工厂 | |
| DAGraphicsCommandsFactory * | commandsFactory () |
| 命令工厂 | |
| virtual bool | isItemCanMove (QGraphicsItem *positem, const QPointF &scenePos) |
| 判断点击的item是否可以移动 | |
Protected 槽 | |
| void | onSelectItemChanged (DAGraphicsItem *item) |
| item选择改变 | |
| void | onSelectLinkChanged (DAGraphicsLinkItem *item) |
| void | onNodeNameChanged (DAAbstractNode::SharedPointer node, const QString &oldName, const QString &newName) |
| 节点名字改变触发的槽 | |
Protected 成员函数 | |
| void | mousePressEvent (QGraphicsSceneMouseEvent *mouseEvent) override |
| void | callNodeItemLinkIsEmpty (DAAbstractNodeLinkGraphicsItem *link) |
| itemlink都没用节点连接时会调用这个函数,发出 | |
Protected 成员函数 继承自 DA::DAGraphicsScene | |
| void | emitItemsPositionChanged (const QList< QGraphicsItem * > &items, const QList< QPointF > &oldPos, const QList< QPointF > &newPos) |
| 调用此函数 主动触发itemsPositionChanged信号,这个函数用于 继承此类例如实现了键盘移动item,主动触发此信号 | |
| void | emitItemBodySizeChanged (DAGraphicsResizeableItem *item, const QSizeF &oldSize, const QSizeF &newSize) |
| 调用此函数 主动触发itemBodySizeChanged信号 | |
| void | emitItemRotationChanged (DAGraphicsResizeableItem *item, const qreal &rotation) |
| 调用此函数 主动触发itemRotationed信号 | |
| void | addItemWithSignal (QGraphicsItem *item) |
| 带信号的addItm | |
| void | mousePressEvent (QGraphicsSceneMouseEvent *mouseEvent) override |
| void | mouseMoveEvent (QGraphicsSceneMouseEvent *mouseEvent) override |
| void | mouseReleaseEvent (QGraphicsSceneMouseEvent *mouseEvent) override |
| void | drawBackground (QPainter *painter, const QRectF &rect) override |
静态 Protected 成员函数 | |
| static void | classifyItems (const QList< QGraphicsItem * > &sourceItems, QList< DAAbstractNodeGraphicsItem * > &nodeItems, QList< DAAbstractNodeLinkGraphicsItem * > &linkItems, QList< QGraphicsItem * > &normalItem) |
| 对item进行分类 | |
| static QList< DAAbstractNodeLinkGraphicsItem * > | getNodesAllLinkItems (const QList< DAAbstractNodeGraphicsItem * > &nodeItems) |
| 获取node item的所有连接线 | |
| static QList< DAAbstractNode::SharedPointer > | nodeItemsToNodes (const QList< DAAbstractNodeGraphicsItem * > &nodeItems) |
| 所有节点item对应的node | |
友元 | |
| class | DAAbstractNodeGraphicsItem |
| class | DAAbstractNodeLinkGraphicsItem |
额外继承的成员函数 | |
Public 类型 继承自 DA::DAGraphicsScene | |
| enum | LinkMode { LinkModeAutoStartEndFollowMouseClick } |
| 链接模式 更多... | |
Public 槽 继承自 DA::DAGraphicsScene | |
| void | setEnableSnapToGrid (bool on=true) |
| 是否允许对齐网格 | |
| void | showGridLine (bool on) |
| 显示网格线 | |
| int | selectAll () |
| 选中所有item | |
| int | unselectAll () |
| 取消选择,把所有item设置为非选中状态 | |
| void | clearSelection () |
| 取消选中item | |
| int | setSelectionState (const QList< QGraphicsItem * > &its, bool isSelect) |
| 设置item的选中状态 | |
| void | setReadOnly (bool on) |
| 设定为只读模式 | |
| void | setupSceneAction (DA::DAAbstractGraphicsSceneAction *act) |
| 激活场景动作 | |
| void | clearSceneAction () |
| 清除场景动作 | |
静态 Public 成员函数 继承自 DA::DAGraphicsScene | |
| static QGraphicsItem * | findItemByID (const QList< QGraphicsItem * > &its, uint64_t id, bool recursion=false) |
| 查找id对应的GraphicsItem* | |
| static int | getDefaultDPI () |
| 获取默认的dpi | |
| static int | dpiToPx (int dpi, int r) |
| dpi转为像素 | |
| static void | addItemToGroup (QGraphicsItemGroup *group, const QList< QGraphicsItem * > &willGroupItems) |
| 通用的item分组,此操作和QGraphicsScene::createItemGroup逻辑一致 | |
DAAbstractNodeGraphicsItem对应的QGraphicsScene,通过此scene,管理DAWorkFlow内容
| DAGraphicsPixmapItem * DA::DANodeGraphicsScene::addPixmapItem_ | ( | const QImage & | img | ) |
添加一个图片item
| img |
|
protected |
itemlink都没用节点连接时会调用这个函数,发出
| link |
|
overridevirtual |
取消链接,如果此时没在进行链接,不做处理
重载 DA::DAGraphicsScene .
|
staticprotected |
对item进行分类
| sourceItems | |
| nodeItems | |
| linkItems | |
| normalItem |
| DAAbstractNodeGraphicsItem * DA::DANodeGraphicsScene::createNode | ( | const DANodeMetaData & | md, |
| const QPointF & | pos, | ||
| bool | addItemToScene = true |
||
| ) |
创建节点(不带回退功能)
| md | |
| pos | |
| addItemToScene | 控制是否创建节点对应的item加入场景中,默认为true |
| DAAbstractNodeGraphicsItem * DA::DANodeGraphicsScene::createNode_ | ( | const DANodeMetaData & | md, |
| const QPointF & | pos | ||
| ) |
通过node元对象创建工作流节点
| md |
| DAAbstractNodeGraphicsItem * DA::DANodeGraphicsScene::findItemByNode | ( | DAAbstractNode * | n | ) |
通过node找到item
| n |
| QList< QGraphicsItem * > DA::DANodeGraphicsScene::getGraphicsItemsWithoutLink | ( | ) | const |
获取除了连接线以外的item
| QList< DAAbstractNodeGraphicsItem * > DA::DANodeGraphicsScene::getNodeGraphicsItems | ( | ) | const |
获取所有的NodeGraphicsItems
|
staticprotected |
获取node item的所有连接线
| nodeItems |
| DAAbstractNodeGraphicsItem * DA::DANodeGraphicsScene::getSelectedNodeGraphicsItem | ( | ) | const |
获取选中的NodeGraphicsItem,如果没有返回nullptr,如果选中多个,返回第一个
| QList< DAAbstractNodeGraphicsItem * > DA::DANodeGraphicsScene::getSelectedNodeGraphicsItems | ( | ) | const |
获取选中的NodeGraphicsItem,如果没有返回一个空list
| DAAbstractNodeLinkGraphicsItem * DA::DANodeGraphicsScene::getSelectedNodeLinkGraphicsItem | ( | ) | const |
获取选中的NodeLinkGraphicsItem,如果没有返回nullptr,如果选中多个,返回第一个
| QList< DAGraphicsStandardTextItem * > DA::DANodeGraphicsScene::getTextGraphicsItems | ( | ) | const |
| DAWorkFlow * DA::DANodeGraphicsScene::getWorkflow | ( | ) |
获取工作流
|
overrideprotected |
说明没有点击到连接点,正常传递到DAGraphicsSceneWithUndoStack DAGraphicsSceneWithUndoStack的连线在这时候就结束,但这里并不想结束, 因此需要调用setIgnoreLinkEvent忽略掉链接模式的事件
记录到redo/undo中
| DAAbstractNodeGraphicsItem * DA::DANodeGraphicsScene::nodeItemAt | ( | const QPointF & | scenePos | ) | const |
通过位置获取DAAbstractNodeGraphicsItem
此函数是加强版的itemAt
| scenePos |
|
signal |
节点的连接点被选中触发的信号
| item | 节点item |
| lp | 连接点 |
|
signal |
节点被移除
|
staticprotected |
所有节点item对应的node
| nodeItems |
|
signal |
连接线被移除
|
protectedslot |
节点名字改变触发的槽
| node | |
| oldName | |
| newName |
|
protectedslot |
item选择改变
| int DA::DANodeGraphicsScene::removeSelectedItems_ | ( | ) |
删除选中的item,此函数支持redo/undo
注意: 如果处于链接状态(isStartLink() == true)那么不能删除正在链接的那个元素的节点,否则会导致异常
|
signal |
选中了某个节点的设置窗口
| w |
|
signal |
选中了某个节点的设置窗口
| w |
| void DA::DANodeGraphicsScene::setWorkFlow | ( | DAWorkFlow * | wf | ) |
设置工作流
| wf |