12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #include "CMindView.h"
- #include "CRectItem.h"
- #include "CLineItem.h"
- #include "CTextItem.h"
- #include "CMind.h"
- #include "CNodeItem.h"
- #include <QMenu>
- #include <QContextMenuEvent>
- #include <QDebug>
- 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);
- }
|