#ifndef ELAGRAPHICSSCENE_H #define ELAGRAPHICSSCENE_H #include #include #include #include #include #include #include "Def.h" #include "stdafx.h" class ElaGraphicsItem; class ElaGraphicsScenePrivate; class ELA_EXPORT ElaGraphicsScene : public QGraphicsScene { Q_OBJECT Q_Q_CREATE(ElaGraphicsScene) Q_PROPERTY_CREATE_Q_H(bool, IsCheckLinkPort) Q_PROPERTY_CREATE_Q_H(QString, SerializePath) public: explicit ElaGraphicsScene(QObject* parent = nullptr); ~ElaGraphicsScene(); void addItem(ElaGraphicsItem* item); void removeItem(ElaGraphicsItem* item); void removeSelectedItems(); void clear(); QList createAndAddItem(int width, int height, int count = 1); QList getSelectedElaItems() const; QList getElaItems(); QList getElaItems(QPoint pos); QList getElaItems(QPointF pos); QList getElaItems(QRect rect); QList getElaItems(QRectF rect); void setSceneMode(ElaGraphicsSceneType::SceneMode mode); ElaGraphicsSceneType::SceneMode getSceneMode() const; void selectAllItems(); QList getItemLinkList() const; bool addItemLink(ElaGraphicsItem* item1, ElaGraphicsItem* item2, int port1 = 0, int port2 = 0); bool removeItemLink(ElaGraphicsItem* item1); bool removeItemLink(ElaGraphicsItem* item1, ElaGraphicsItem* item2, int port1 = 0, int port2 = 0); QVector getItemsDataRoute() const; // 序列化 反序列化 void serialize(); void deserialize(); Q_SIGNALS: void showItemLink(); void mouseLeftClickedItem(ElaGraphicsItem* item); void mouseRightClickedItem(ElaGraphicsItem* item); void mouseDoubleClickedItem(ElaGraphicsItem* item); protected: virtual void focusOutEvent(QFocusEvent* event) override; virtual void keyPressEvent(QKeyEvent* event) override; virtual void keyReleaseEvent(QKeyEvent* event) override; virtual void mousePressEvent(QGraphicsSceneMouseEvent* event) override; virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override; virtual void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override; virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override; }; #endif // ELAGRAPHICSSCENE_H