#ifndef DBSTRUCTURENODE_H #define DBSTRUCTURENODE_H #include #include #include enum NodeType //节点类型 { RootNode, //根节点 ConnectionNode, //链接(名称)节点 DatabaseNode, //数据库节点 TableNode, //表节点 GroupNode //属性组节点 }; enum NodeStatus //节点状态(主要是ConnectionNode) { Connect, Disconnect, NoStatus }; enum NodeDataRole { ID = 1, Type }; class DBStructureNode { public: enum ColumnRole { ColumnName = 0, //ColumnStatus = 1, ColumnCount = 1 //用来表示属性列的数量 }; explicit DBStructureNode(NodeType type, const QString& name, DBStructureNode* parent = nullptr); ~DBStructureNode(); //节点操作 void appendChild(DBStructureNode* child); void removeChild(DBStructureNode* child); DBStructureNode* child(int row); int childCount() const; int row() const; void removeAllChildren(); //数据访问 NodeType type() const; QString name() const; void setName(const QString&); QIcon icon() const; void setStatus(NodeStatus); NodeStatus status() const; QVariant columnData(int column) const; //QVariant icon() const; DBStructureNode* parentNode(); //模仿QTreeWidgetItem的数据接口 void setData(int, const QVariant&); QVariant data(int) const; private: NodeType m_type; QString m_name; QIcon m_icon; NodeStatus m_status; QHash m_roleData; QList m_children; DBStructureNode* m_parent; }; #endif //DBSTRUCTURENODE_H