25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.0 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. virtual void MenuActions(QMenu *menu); // 添加基本菜单项
  21. virtual void addMenuActions(QMenu *menu); // 添加额外菜单项
  22. virtual void handleMenuAction(QAction *action); // 处理菜单动作
  23. signals:
  24. void requestCopy(Item*);
  25. void requestDelete(Item*);
  26. protected:
  27. QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
  28. void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
  29. QString type_;
  30. QList<Connection*> connections_;
  31. };
  32. #endif // ITEM_H