From 7a4f6dec766b35f77cc1ea00d06f839e6d1fd120 Mon Sep 17 00:00:00 2001 From: duanshengchao <519970194@qq.com> Date: Fri, 14 Mar 2025 16:45:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BA=E8=87=AA=E5=AE=9A=E4=B9=89=E6=A0=91?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=B1=BBdbStructureNode=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=92=8CQTreeWdigetItem=E4=B8=80=E6=A0=B7=E7=9A=84setData?= =?UTF-8?q?=E5=92=8Cdata=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/dbStructureModel.h | 2 +- include/dbStructureNode.h | 9 +++++++++ source/dbStructureModel.cpp | 5 ++++- source/dbStructureNode.cpp | 10 ++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) 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 +}