CMindView.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. Q_OBJECT
  11. public:
  12. explicit CMindView(QWidget *parent = nullptr);
  13. CMind *mind() const;
  14. void setNodeList(QList<CNodeData> list);
  15. void addNode(CNodeData n); // 添加一个节点
  16. void clear(); // 清空
  17. void refreshItems();
  18. void collectItems(CNodeItem *node);
  19. qreal hNodeSpace() const;
  20. void setHNodeSpace(qreal h);
  21. qreal vNodeSpace() const;
  22. void setVNodeSpace(qreal v);
  23. void setALignNodes(bool align);
  24. CNodeItem *root() const;
  25. void refreshNodeGeometry(CNodeItem *node, QPointF topLeft = QPointF());
  26. void mousePressEvent(QMouseEvent *event) override;
  27. void mouseMoveEvent(QMouseEvent *event) override;
  28. bool isCloseToEdge();
  29. void moveToCenter();
  30. void testData();
  31. public slots:
  32. void slotAddSubNode(int pNumber); // 指定父节点, 创建子节点
  33. void slotRemoveNode(int number); // 移除节点
  34. void slotTextChanged(); // 编辑节点
  35. void slotWillBeginEditing();
  36. signals:
  37. void sigAddSubNode(int pNumber);
  38. private:
  39. CMind *m_mind = nullptr;
  40. CNodeItem *m_root = nullptr;
  41. QGraphicsItemGroup *m_group = nullptr;
  42. // 场景中显示的项目
  43. QList<QGraphicsItem *> m_items;
  44. qreal m_hNodeSpace = 50;
  45. qreal m_vNodeSpace = 20;
  46. bool m_align = true;
  47. };
  48. #endif // CMINDVIEW_H