#include "CMindView.h" #include "CRectItem.h" #include "CLineItem.h" #include "CTextItem.h" #include "CMind.h" #include "CNodeItem.h" #include #include #include CMindView::CMindView(QWidget *parent) : QGraphicsView(new QGraphicsScene(), parent) { setRenderHints(QPainter::Antialiasing); // 抗锯齿 m_mind = new CMind(this); } void CMindView::connectSignalsAndSlots() { } CMind *CMindView::mind() const { return m_mind; } void CMindView::setMind(CMind *mind) { m_mind = mind; refresh(); } void CMindView::refresh() { for (CNodeItem *item : m_itemList) { scene()->removeItem(item->rectItem()); delete item; } m_itemList.clear(); for (CNodeData n : m_mind->nodeList()) { CNodeItem *item = new CNodeItem(this, n.number); item->setText(n.name); m_itemList.append(item); scene()->addItem(item->rectItem()); connect(item, &CNodeItem::sigAddSubItem, this, &CMindView::addSubNode); connect(item, &CNodeItem::sigRemoveItem, this, &CMindView::removeNode); } } void CMindView::setALignment(CMindView::Alignment align) { m_align = align; } void CMindView::addNode(CNodeData n) { m_mind->addNode(n); refresh(); } void CMindView::removeNode(int number) { qDebug() << __FUNCTION__ << __LINE__ << number << endl; m_mind->removeNode(number); refresh(); } void CMindView::addSubNode(int pNumber) { qDebug() << __FUNCTION__ << __LINE__ << pNumber << endl; CNodeData root = m_mind->root(); CNodeData n = CNodeData(root.projectId, root.evalType, m_mind->maxNumber() + 1, pNumber); addNode(n); } void CMindView::testItems() { CRectItem *r = new CRectItem(QRectF(0, 0, 100, 100)); scene()->addItem(r); CLineItem *l = new CLineItem(QPointF(-100, -100), QPointF(50, 50)); scene()->addItem(l); l->setFlags(QGraphicsItem::ItemIsMovable); l->setLineType(CLineItem::CurveToLine); CTextItem *t = new CTextItem("test", QPoint(0, 0)); scene()->addItem(t); }