#ifndef CNODEITEM_H #define CNODEITEM_H #include #include class CRectItem; class CTextItem; class CNodeItem : public QObject { Q_OBJECT public: explicit CNodeItem(QObject *parent = nullptr, int number = -1, QPointF pos = QPointF()); int number() const; void setNumber(int n); QString text() const; void setText(const QString text); 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); void connectSignalsAndSlots(); private: void updateItemsGeometry(); signals: void sigAddSubItem(int pNumber); void sigRemoveItem(int number); public slots: void slotSelect(); void slotSubNode(); void slotRemove(); private: int m_number = -1; // 对应 CNodeData.number CRectItem *m_rectItem; CTextItem *m_textItem; QPointF m_pos; qreal m_xMargin = 10; qreal m_yMargin = 5; }; #endif // CNODEITEM_H