#ifndef CMINDVIEW_H #define CMINDVIEW_H #include #include #include "CNode.h" #include "CMind.h" class CNodeItem; class CMindView : public QGraphicsView { Q_OBJECT public: explicit CMindView(QWidget *parent = nullptr); CMind *mind() const; void setNodeList(QList list); void addNode(CNodeData n); // 添加一个节点 void clear(); // 清空 void refreshItems(); void collectItems(CNodeItem *node); qreal hNodeSpace() const; void setHNodeSpace(qreal h); qreal vNodeSpace() const; void setVNodeSpace(qreal v); void setALignNodes(bool align); CNodeItem *root() const; void refreshNodeGeometry(CNodeItem *node, QPointF topLeft = QPointF()); void mousePressEvent(QMouseEvent *event) override; void testData(); public slots: void slotAddSubNode(int pNumber); // 指定父节点, 创建子节点 void slotRemoveNode(int number); // 移除节点 void slotTextChanged(); // 编辑节点 signals: void sigAddSubNode(int pNumber); private: CMind *m_mind = nullptr; CNodeItem *m_root = nullptr; QGraphicsItemGroup *m_group = nullptr; // 场景中显示的项目 QList m_items; qreal m_hNodeSpace = 50; qreal m_vNodeSpace = 20; bool m_align = true; }; #endif // CMINDVIEW_H