diff --git a/include/dbStructureModel.h b/include/dbStructureModel.h index 99b6680..20eac83 100644 --- a/include/dbStructureModel.h +++ b/include/dbStructureModel.h @@ -4,7 +4,7 @@ #include #include #include "dbStructureNode.h" -#include "sqlQueryExecutor.h" +#include "global.h" class DBStructureModel : public QAbstractItemModel { diff --git a/include/dbStructureNode.h b/include/dbStructureNode.h index ca6b7e5..28245f3 100644 --- a/include/dbStructureNode.h +++ b/include/dbStructureNode.h @@ -21,6 +21,11 @@ enum NodeStatus //节点状态(主要是ConnectionNode) NoStatus }; +enum NodeDataRole +{ + ID = 1 +}; + class DBStructureNode { public: @@ -50,12 +55,16 @@ public: 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; }; diff --git a/source/dbStructureModel.cpp b/source/dbStructureModel.cpp index fa67f20..6eca2a6 100644 --- a/source/dbStructureModel.cpp +++ b/source/dbStructureModel.cpp @@ -1,4 +1,5 @@ #include "dbStructureModel.h" +#include "sqlQueryExecutor.h" #include "logger.h" // #include // #include @@ -84,7 +85,7 @@ QVariant DBStructureModel::data(const QModelIndex& index, int role) const case Qt::DecorationRole: return node->icon(); default: - return QVariant(); + return node->data(role); } } @@ -142,10 +143,12 @@ void DBStructureModel::addDataModel(const QString& connection, Model& model) beginInsertRows(connIndex, connNode->childCount(), connNode->childCount()); DBStructureNode* modelNode = new DBStructureNode(TableNode, model.name, connNode); + modelNode->setData(Qt::UserRole + NodeDataRole::ID, model.id); for(int groupID : model.groups) { QString groupName = SqlQueryExecutor::instance().getArributeGropuName(connection, groupID); DBStructureNode* groupNode = new DBStructureNode(GroupNode, groupName, modelNode); + groupNode->setData(Qt::UserRole + NodeDataRole::ID, groupID); modelNode->appendChild(groupNode); } connNode->appendChild(modelNode); diff --git a/source/dbStructureNode.cpp b/source/dbStructureNode.cpp index 89b6b0c..a9eb9d4 100644 --- a/source/dbStructureNode.cpp +++ b/source/dbStructureNode.cpp @@ -130,3 +130,13 @@ DBStructureNode* DBStructureNode::parentNode() { return m_parent; } + +void DBStructureNode::setData(int role, const QVariant& value) +{ + m_roleData[role] = value; +} + +QVariant DBStructureNode::data(int role) const +{ + return m_roleData.value(role, QVariant()); //不存在则返回空QVariant +}