123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #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)
- {
- m_mind = new CMind(this);
- setRenderHints(QPainter::Antialiasing); // 抗锯齿
- }
- CMind *CMindView::mind() const
- {
- return m_mind;
- }
- void CMindView::setNodeList(QList<CNodeData> list)
- {
- clear();
- m_mind->setNodeList(list);
- m_root = new CNodeItem(m_mind->root());
- refreshItems();
- }
- void CMindView::addNode(CNodeData n)
- {
- m_mind->addNode(n);
- CNodeItem *item = new CNodeItem(n);
- connect(item, &CNodeItem::sigAddSubItem, this, &CMindView::createSubNode);
- connect(item, &CNodeItem::sigRemoveItem, this, &CMindView::removeNode);
- if (m_root == nullptr) {
- m_root = item;
- } else {
- m_root->addSubNode(item);
- }
- refreshItems();
- }
- void CMindView::createSubNode(int pNumber)
- {
- if (pNumber < 0) {
- return;
- }
- CNodeData data = root()->data();
- CNodeData n = CNodeData(data.projectId, data.evalType, 0, data.number);
- addNode(n);
- }
- void CMindView::removeNode(int number)
- {
- qDebug() << __FUNCTION__ << __LINE__ << endl;
- m_mind->removeNode(number);
- if (number == m_root->data().number) {
- clear();
- qDebug() << __FUNCTION__ << __LINE__ << endl;
- } else {
- m_root->removeNode(number);
- }
- refreshItems();
- }
- void CMindView::clear()
- {
- m_mind->nodeList().clear();
- delete m_root;
- m_root = nullptr;
- refreshItems();
- }
- void CMindView::refreshItems()
- {
- for (QGraphicsItem *item : m_items) {
- scene()->removeItem(item);
- }
- m_items.clear();
- collectItems(m_root);
- for (QGraphicsItem *item : m_items) {
- scene()->addItem(item);
- }
- }
- void CMindView::collectItems(CNodeItem *node)
- {
- m_items.clear();
- if (node == nullptr) {
- return;
- }
- m_items.append(node->rectItem());
- for (QObject *o : node->children()) {
- CNodeItem *n = dynamic_cast<CNodeItem *>(o);
- collectItems(n);
- }
- }
- qreal CMindView::hNodeSpace() const
- {
- return m_hNodeSpace;
- }
- void CMindView::setHNodeSpace(qreal h)
- {
- m_hNodeSpace = h;
- }
- qreal CMindView::vNodeSpace() const
- {
- return m_vNodeSpace;
- }
- void CMindView::setVNodeSpace(qreal v)
- {
- m_vNodeSpace = v;
- }
- void CMindView::setALignment(CMindView::Alignment align)
- {
- m_align = align;
- }
- CNodeItem *CMindView::root() const
- {
- return m_root;
- }
|