You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.2 KiB

  1. #ifndef ITEM_H
  2. #define ITEM_H
  3. #include <QGraphicsObject>
  4. #include <QColor>
  5. #include <QList>
  6. #include <QAction>
  7. class Connection;
  8. class Item : public QGraphicsObject
  9. {
  10. Q_OBJECT
  11. public:
  12. enum AnchorType { Left, Right };
  13. explicit Item(const QString &type, QGraphicsItem *parent = nullptr);
  14. QRectF boundingRect() const override;
  15. QPointF anchorPos(AnchorType type) const;
  16. void addConnection(Connection* conn);
  17. void removeConnection(Connection* conn);
  18. QList<Connection*> connections();
  19. QString itemType();
  20. void setRegisterId(const QString& id) { registerId_ = id; }
  21. QString registerId() const { return registerId_; }
  22. signals:
  23. void requestCopy(Item*);
  24. void requestDelete(Item*);
  25. void requestBindRegister(Item*);
  26. protected:
  27. virtual void MenuActions(QMenu *menu);
  28. virtual void addMenuActions(QMenu *menu);
  29. virtual void handleMenuAction(QAction *action);
  30. QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
  31. void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
  32. QString type_;
  33. QList<Connection*> connections_;
  34. QString registerId_;
  35. };
  36. #endif // ITEM_H