CMindView.cpp 1.9 KB

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