#ifndef CMIND_H #define CMIND_H #include "CNode.h" #include struct SeqNode { QString name; QStringList childs; }; class CMind : public QObject { Q_OBJECT public: explicit CMind(QObject *parent = nullptr); // 节点数据 QList nodeList() const; void setNodeList(QList list); bool isNodeValid(CNodeData n) const; CNodeData node(int number) const; bool containsNode(int number) const; bool canAddNode(CNodeData n); void addNode(CNodeData n); void removeNode(int number); void updateNode(CNodeData n); CNodeData root() const; bool hasAncestor(int childNumber, int ancestorNumber) const; /// 节点是否被设置为无效 /// 节点被设置为无效时, 其后代节点也被视为无效 /// bool isInvalidated(int number) const; // 最大的节点编号, 创建节点时, 编号递增 int maxNumber() const; // 最小的节点编号, 由于创建节点时编号递增, 所以此为根节点 int minNumber() const; void clear(); // 节点所在层级 int levelOfNode(CNodeData n) const; // 节点图层级数 int levels() const; // 某一层节点列表, 第1层为根节点 QList nodesInLevel(int i) const; // 子节点列表 QList subNodes(CNodeData n) const; // 某节点的叶子节点个数或包含的分支数 int leavesCountOfNode(CNodeData n) const; // 脑图的叶子节点个数或包含的分支数 int leavesCount() const; // 某节点的叶子节点列表, 即最外层节点 QList leavesOfNode(CNodeData n) const; // 脑图的叶子节点列表 QList leaves() const; void getSeqNodes(QList> &seqNodes) const; // 序列所有节点 const CNode *nodeObject() const; signals: void sigRemoveNode(int id); private: QList numberList() const; // 节点编号列表 private: QList m_nodeList; // 节点列表 }; #endif // CMIND_H