为自定义树节点类dbStructureNode添加和QTreeWdigetItem一样的setData和data函数
This commit is contained in:
parent
294c9494cf
commit
7a4f6dec76
|
|
@ -4,7 +4,7 @@
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
#include <QTreeWidgetItem>
|
#include <QTreeWidgetItem>
|
||||||
#include "dbStructureNode.h"
|
#include "dbStructureNode.h"
|
||||||
#include "sqlQueryExecutor.h"
|
#include "global.h"
|
||||||
|
|
||||||
class DBStructureModel : public QAbstractItemModel
|
class DBStructureModel : public QAbstractItemModel
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,11 @@ enum NodeStatus //节点状态(主要是ConnectionNode)
|
||||||
NoStatus
|
NoStatus
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum NodeDataRole
|
||||||
|
{
|
||||||
|
ID = 1
|
||||||
|
};
|
||||||
|
|
||||||
class DBStructureNode
|
class DBStructureNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -50,12 +55,16 @@ public:
|
||||||
QVariant columnData(int column) const;
|
QVariant columnData(int column) const;
|
||||||
//QVariant icon() const;
|
//QVariant icon() const;
|
||||||
DBStructureNode* parentNode();
|
DBStructureNode* parentNode();
|
||||||
|
//模仿QTreeWidgetItem的数据接口
|
||||||
|
void setData(int, const QVariant&);
|
||||||
|
QVariant data(int) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NodeType m_type;
|
NodeType m_type;
|
||||||
QString m_name;
|
QString m_name;
|
||||||
QIcon m_icon;
|
QIcon m_icon;
|
||||||
NodeStatus m_status;
|
NodeStatus m_status;
|
||||||
|
QHash<int, QVariant> m_roleData;
|
||||||
QList<DBStructureNode*> m_children;
|
QList<DBStructureNode*> m_children;
|
||||||
DBStructureNode* m_parent;
|
DBStructureNode* m_parent;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
#include "dbStructureModel.h"
|
#include "dbStructureModel.h"
|
||||||
|
#include "sqlQueryExecutor.h"
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
// #include <QSqlDatabase>
|
// #include <QSqlDatabase>
|
||||||
// #include <QSqlQuery>
|
// #include <QSqlQuery>
|
||||||
|
|
@ -84,7 +85,7 @@ QVariant DBStructureModel::data(const QModelIndex& index, int role) const
|
||||||
case Qt::DecorationRole:
|
case Qt::DecorationRole:
|
||||||
return node->icon();
|
return node->icon();
|
||||||
default:
|
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());
|
beginInsertRows(connIndex, connNode->childCount(), connNode->childCount());
|
||||||
|
|
||||||
DBStructureNode* modelNode = new DBStructureNode(TableNode, model.name, connNode);
|
DBStructureNode* modelNode = new DBStructureNode(TableNode, model.name, connNode);
|
||||||
|
modelNode->setData(Qt::UserRole + NodeDataRole::ID, model.id);
|
||||||
for(int groupID : model.groups)
|
for(int groupID : model.groups)
|
||||||
{
|
{
|
||||||
QString groupName = SqlQueryExecutor::instance().getArributeGropuName(connection, groupID);
|
QString groupName = SqlQueryExecutor::instance().getArributeGropuName(connection, groupID);
|
||||||
DBStructureNode* groupNode = new DBStructureNode(GroupNode, groupName, modelNode);
|
DBStructureNode* groupNode = new DBStructureNode(GroupNode, groupName, modelNode);
|
||||||
|
groupNode->setData(Qt::UserRole + NodeDataRole::ID, groupID);
|
||||||
modelNode->appendChild(groupNode);
|
modelNode->appendChild(groupNode);
|
||||||
}
|
}
|
||||||
connNode->appendChild(modelNode);
|
connNode->appendChild(modelNode);
|
||||||
|
|
|
||||||
|
|
@ -130,3 +130,13 @@ DBStructureNode* DBStructureNode::parentNode()
|
||||||
{
|
{
|
||||||
return m_parent;
|
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
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue