#ifndef ITEM_H #define ITEM_H #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; void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; QPointF anchorPos(AnchorType type) const; void addConnection(Connection* conn); void removeConnection(Connection* conn); QList connections(); QString itemType(); signals: void requestCopy(Item*); void requestDelete(Item*); protected: QVariant itemChange(GraphicsItemChange change, const QVariant &value) override; void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override; private: QString type_; QColor color_; QList connections_; }; #endif // ITEM_H