DiagramDesigner/include/designerScene.h

64 lines
1.5 KiB
C++

#ifndef DESIGNER_SCENE_H
#define DESIGNER_SCENE_H
#include <QGraphicsScene>
#include "basicGraphicsScene.h"
#include "dataFlowGraphModel.h"
class GraphicsItemGroup;
class DrawingPanel;
class DesignerScene : public BasicGraphicsScene
{
Q_OBJECT
public:
DesignerScene(DataFlowGraphModel &graphModel,QObject *parent = 0);
virtual ~DesignerScene();
void setGridVisible(bool);
void setView(QGraphicsView* view) { m_pView = view; }
QGraphicsView* getView() { return m_pView; }
void callParentEvent(QGraphicsSceneMouseEvent*);
GraphicsItemGroup* createGroup();
void destroyGroup();
signals:
void signalAddItem(QGraphicsItem*);
protected:
void drawBackground(QPainter*, const QRectF&) override;
void mousePressEvent(QGraphicsSceneMouseEvent*) override;
void mouseMoveEvent(QGraphicsSceneMouseEvent*) override;
void mouseReleaseEvent(QGraphicsSceneMouseEvent*) override;
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent*) override;
void keyPressEvent(QKeyEvent*) override;
void keyReleaseEvent(QKeyEvent*) override;
private:
bool m_bGridVisible;
QGraphicsView* m_pView;
DrawingPanel* m_pDrawingPanel; //保存父指针
public:
std::vector<NodeId> selectedNodes() const;
public:
QMenu *createSceneMenu(QPointF const scenePos) override;
public Q_SLOTS:
bool save() const;
bool load();
Q_SIGNALS:
void sceneLoaded();
private:
DataFlowGraphModel &_graphModel;
};
#endif