#ifndef CNODEITEM_H #define CNODEITEM_H #include #include "CNode.h" #include class CRectItem; class CTextItem; class CLineItem; class CNodeItem : public QObject { Q_OBJECT public: explicit CNodeItem(const CNodeData data, CNodeItem *parent = nullptr); CNodeData data() const; void addSubNode(CNodeItem *n); void removeNode(int number); CRectItem *rectItem() const; CTextItem *textItem() const; QPointF pos() const; void setPos(const QPointF pos); qreal xMargin() const; void setXMargin(qreal x); qreal yMargin() const; void setYMargin(qreal y); qreal minWidth() const; void setMinWidth(qreal w); qreal minHeight() const; void setMinHeight(qreal h); void connectSignalsAndSlots(); private: void updateItemsGeometry(); signals: void sigAddSubItem(int pNumber); void sigRemoveItem(int number); public slots: void slotSelect(); void slotSubNode(); void slotRemove(); private: CNodeData m_data; CRectItem *m_rectItem; CTextItem *m_textItem; CLineItem *m_lineItem; QPointF m_pos; qreal m_xMargin = 10; qreal m_yMargin = 5; qreal m_minWidth = 100; qreal m_minHeight = 30; }; #endif // CNODEITEM_H