CMindView.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef CMINDVIEW_H
  2. #define CMINDVIEW_H
  3. #include <QGraphicsView>
  4. #include <list>
  5. #include "CNode.h"
  6. #include "CMind.h"
  7. class CNodeItem;
  8. class CMindView : public QGraphicsView
  9. {
  10. public:
  11. explicit CMindView(QWidget *parent = nullptr);
  12. CMind *mind() const;
  13. void setNodeList(QList<CNodeData> list);
  14. void addNode(CNodeData n); // 添加一个节点
  15. void clear(); // 清空
  16. void refreshItems();
  17. void collectItems(CNodeItem *node);
  18. qreal hNodeSpace() const;
  19. void setHNodeSpace(qreal h);
  20. qreal vNodeSpace() const;
  21. void setVNodeSpace(qreal v);
  22. void setALignNodes(bool align);
  23. CNodeItem *root() const;
  24. void refreshNodeGeometry(CNodeItem *node, QPointF topLeft = QPointF());
  25. void mousePressEvent(QMouseEvent *event) override;
  26. void testData();
  27. public slots:
  28. void slotAddSubNode(int pNumber); // 指定父节点, 创建子节点
  29. void slotRemoveNode(int number); // 移除节点
  30. void slotTextChanged(); // 编辑节点
  31. private:
  32. CMind *m_mind = nullptr;
  33. CNodeItem *m_root = nullptr;
  34. QGraphicsItemGroup *m_group = nullptr;
  35. // 场景中显示的项目
  36. QList<QGraphicsItem *> m_items;
  37. qreal m_hNodeSpace = 50;
  38. qreal m_vNodeSpace = 20;
  39. bool m_align = true;
  40. };
  41. #endif // CMINDVIEW_H