#ifndef CUSTOMGRAPHICSSCENE_H #define CUSTOMGRAPHICSSCENE_H #include #include "customgraphics.h" class QGraphicsSceneMouseEvent; class QGraphicsSceneContextMenuEvent; class QGraphicsView; class QKeyEvent; class CustomGraphicsScene : public QGraphicsScene { Q_OBJECT public: enum Mode { Normal, CreateItem }; explicit CustomGraphicsScene(QGraphicsView* view, QObject *parent = nullptr); void setMode(Mode mode); void setComponentTypeToCreate(ComponentType type); signals: void componentCreated(HmiComponent* item); // 转发键盘操作请求 void copyRequestFromScene(); void pasteRequestFromScene(const QPointF& scenePos); // 传递粘贴位置 void deleteRequestFromScene(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) override; void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent) override; void keyPressEvent(QKeyEvent *keyEvent) override; void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent) override; private: Mode m_mode; ComponentType m_componentTypeToCreate; QGraphicsView* m_view; }; #endif // CUSTOMGRAPHICSSCENE_H