Pārlūkot izejas kodu

Add node to mind view

chengxr 1 gadu atpakaļ
vecāks
revīzija
7fcd75dc7f

+ 2 - 18
QFD/CCanvas/CMind.h

@@ -1,25 +1,9 @@
 #ifndef CMIND_H
 #define CMIND_H
 
-#include <QObject>
+#include "CNode.h"
 
-struct CNodeData
-{
-    int id        = -1;  // 节点 id, 对应数据库节点表中的 id, 数据库自动生成
-    int projectId = -1;  // 项目 id, 对应数据库项目表中的 id, 为脑图所属项目, 数据库自动生成
-    int evalType  = 0;   // 评估类型
-    int number    = -1;  // 节点编号, 作用域为当前脑图, 0 为根节点
-    int pNumber   = -1;  // 父节点编号
-    QString name;        // 名称
-    QString remark;      // 备注
-
-    CNodeData(int projId = -1, int evalType = 0, int number = -1, int pNumber = -1, int id = -1);
-
-    bool isValid() const;
-    bool isNull() const;
-    bool isCached() const;
-    bool hasParent() const;
-};
+#include <QObject>
 
 class CMind : public QObject
 {

+ 4 - 1
QFD/CCanvas/CMindView.cpp

@@ -3,8 +3,8 @@
 #include "CRectItem.h"
 #include "CLineItem.h"
 #include "CTextItem.h"
-
 #include "CMind.h"
+#include "CNodeItem.h"
 
 #include <QMenu>
 #include <QContextMenuEvent>
@@ -58,6 +58,9 @@ void CMindView::contextMenuEvent(QContextMenuEvent *event)
 void CMindView::slotCreateRootNode()
 {
     qDebug() << __FUNCTION__ << __LINE__ << endl;
+
+    CNodeItem *item = new CNodeItem(0, this);
+    scene()->addItem(item->rectItem());
 }
 
 void CMindView::slotClearAllNodes()

+ 18 - 0
QFD/CCanvas/CNode.h

@@ -3,6 +3,24 @@
 
 #include <QObject>
 
+struct CNodeData
+{
+    int id        = -1;  // 节点 id, 对应数据库节点表中的 id, 数据库自动生成
+    int projectId = -1;  // 项目 id, 对应数据库项目表中的 id, 为脑图所属项目, 数据库自动生成
+    int evalType  = 0;   // 评估类型
+    int number    = -1;  // 节点编号, 作用域为当前脑图, 0 为根节点
+    int pNumber   = -1;  // 父节点编号
+    QString name;        // 名称
+    QString remark;      // 备注
+
+    CNodeData(int projId = -1, int evalType = 0, int number = -1, int pNumber = -1, int id = -1);
+
+    bool isValid() const;
+    bool isNull() const;
+    bool isCached() const;
+    bool hasParent() const;
+};
+
 class CNode : public QObject
 {
     Q_OBJECT

+ 40 - 2
QFD/CCanvas/CNodeItem.cpp

@@ -1,6 +1,44 @@
-#include "CNodeItem.h"
+#include "CNodeItem.h"
 
-CNodeItem::CNodeItem(QObject *parent) : QObject(parent)
+#include "CRectItem.h"
+#include "CTextItem.h"
+
+#include <QTextDocument>
+
+CNodeItem::CNodeItem(int number, QObject *parent) : QObject(parent), m_number(number)
+{
+    m_rectItem = new CRectItem(QRectF(200, 200, 100, 30));
+    m_textItem = new CTextItem(m_rectItem);
+    m_textItem->setPos(QPointF(210, 205));
+    setText("123456");
+}
+
+int CNodeItem::number() const
 {
+    return m_number;
+}
 
+void CNodeItem::setNumber(int n)
+{
+    m_number = n;
+}
+
+QString CNodeItem::text() const
+{
+    return m_textItem->toPlainText();
+}
+
+void CNodeItem::setText(const QString text)
+{
+    m_textItem->document()->setPlainText(text);
+}
+
+CRectItem *CNodeItem::rectItem() const
+{
+    return m_rectItem;
+}
+
+CTextItem *CNodeItem::textItem() const
+{
+    return m_textItem;
 }

+ 19 - 3
QFD/CCanvas/CNodeItem.h

@@ -1,16 +1,32 @@
-#ifndef CNODEITEM_H
+#ifndef CNODEITEM_H
 #define CNODEITEM_H
 
 #include <QObject>
 
+class CRectItem;
+class CTextItem;
+
 class CNodeItem : public QObject
 {
     Q_OBJECT
 public:
-    explicit CNodeItem(QObject *parent = nullptr);
+    explicit CNodeItem(int number = -1, QObject *parent = nullptr);
+
+    int number() const;
+    void setNumber(int n);
+
+    QString text() const;
+    void setText(const QString text);
+
+    CRectItem *rectItem() const;
+    CTextItem *textItem() const;
 
 signals:
 
+private:
+    int m_number = -1;  // 对应 CNodeData.number
+    CRectItem *m_rectItem;
+    CTextItem *m_textItem;
 };
 
-#endif // CNODEITEM_H
+#endif  // CNODEITEM_H

+ 3 - 1
QFD/CCanvas/CTextItem.cpp

@@ -1,6 +1,8 @@
 #include "CTextItem.h"
 
-CTextItem::CTextItem(const QString &text, const QPoint &pos, QGraphicsItem *parent) : QGraphicsTextItem(text, parent)
+CTextItem::CTextItem(QGraphicsItem *parent) : CTextItem(QString(), QPointF(), parent) { }
+
+CTextItem::CTextItem(const QString &text, const QPointF &pos, QGraphicsItem *parent) : QGraphicsTextItem(text, parent)
 {
     setPos(pos);
 }

+ 4 - 1
QFD/CCanvas/CTextItem.h

@@ -7,7 +7,10 @@ class CTextItem : public QGraphicsTextItem
 {
     Q_OBJECT
 public:
-    CTextItem(const QString &text = QString(), const QPoint &pos = QPoint(), QGraphicsItem *parent = nullptr);
+    explicit CTextItem(QGraphicsItem *parent = nullptr);
+
+    explicit CTextItem(const QString &text = QString(), const QPointF &pos = QPointF(),
+                       QGraphicsItem *parent = nullptr);
 };
 
 #endif  // CTEXTITEM_H