#ifndef ITEM_H #define ITEM_H #include #include #include #include class Connection; class Item : public QGraphicsObject { Q_OBJECT public: enum AnchorType { Left, Right }; explicit Item(const QString &type, QGraphicsItem *parent = nullptr); QRectF boundingRect() const override; QPointF anchorPos(AnchorType type) const; void addConnection(Connection* conn); void removeConnection(Connection* conn); QList connections(); QString itemType(); virtual void MenuActions(QMenu *menu); // 添加基本菜单项 virtual void addMenuActions(QMenu *menu); // 添加额外菜单项 virtual void handleMenuAction(QAction *action); // 处理菜单动作 signals: void requestCopy(Item*); void requestDelete(Item*); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override; QString type_; QList connections_; }; #endif // ITEM_H