CMindView.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "CMindView.h"
  2. #include "CRectItem.h"
  3. #include "CLineItem.h"
  4. #include "CTextItem.h"
  5. #include "CMind.h"
  6. #include "CNodeItem.h"
  7. #include <QMenu>
  8. #include <QContextMenuEvent>
  9. #include <QDebug>
  10. CMindView::CMindView(QWidget *parent) : QGraphicsView(new QGraphicsScene(), parent)
  11. {
  12. setRenderHints(QPainter::Antialiasing); // 抗锯齿
  13. testItems();
  14. }
  15. CMind *CMindView::mind() const
  16. {
  17. return m_mind;
  18. }
  19. void CMindView::setMind(CMind *mind)
  20. {
  21. m_mind = mind;
  22. refresh();
  23. }
  24. void CMindView::refresh() { }
  25. void CMindView::setALignment(CMindView::Alignment align)
  26. {
  27. m_align = align;
  28. }
  29. void CMindView::contextMenuEvent(QContextMenuEvent *event)
  30. {
  31. QMenu *menu = new QMenu();
  32. QAction *selectAction = menu->addAction("全选");
  33. connect(selectAction, &QAction::triggered, this, &CMindView::slotSelectAllNodes);
  34. QAction *clearAction = menu->addAction("清空");
  35. connect(clearAction, &QAction::triggered, this, &CMindView::slotClearAllNodes);
  36. if (m_mind != nullptr && m_mind->nodeList().count() <= 0) {
  37. QAction *root = menu->addAction("创建根节点");
  38. connect(root, &QAction::triggered, this, &CMindView::slotCreateRootNode);
  39. }
  40. menu->exec(event->globalPos());
  41. QGraphicsView::contextMenuEvent(event);
  42. }
  43. void CMindView::slotCreateRootNode()
  44. {
  45. qDebug() << __FUNCTION__ << __LINE__ << endl;
  46. CNodeItem *item = new CNodeItem(0, this);
  47. scene()->addItem(item->rectItem());
  48. }
  49. void CMindView::slotClearAllNodes()
  50. {
  51. qDebug() << __FUNCTION__ << __LINE__ << endl;
  52. }
  53. void CMindView::slotSelectAllNodes()
  54. {
  55. qDebug() << __FUNCTION__ << __LINE__ << endl;
  56. }
  57. void CMindView::testItems()
  58. {
  59. CRectItem *r = new CRectItem(QRectF(0, 0, 100, 100));
  60. scene()->addItem(r);
  61. CLineItem *l = new CLineItem(QPointF(-100, -100), QPointF(50, 50));
  62. scene()->addItem(l);
  63. l->setFlags(QGraphicsItem::ItemIsMovable);
  64. l->setLineType(CLineItem::CurveToLine);
  65. CTextItem *t = new CTextItem("test", QPoint(0, 0));
  66. scene()->addItem(t);
  67. }