为自定义树节点类dbStructureNode添加和QTreeWdigetItem一样的setData和data函数
This commit is contained in:
parent
294c9494cf
commit
7a4f6dec76
|
|
@ -4,7 +4,7 @@
|
|||
#include <QAbstractItemModel>
|
||||
#include <QTreeWidgetItem>
|
||||
#include "dbStructureNode.h"
|
||||
#include "sqlQueryExecutor.h"
|
||||
#include "global.h"
|
||||
|
||||
class DBStructureModel : public QAbstractItemModel
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<int, QVariant> m_roleData;
|
||||
QList<DBStructureNode*> m_children;
|
||||
DBStructureNode* m_parent;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "dbStructureModel.h"
|
||||
#include "sqlQueryExecutor.h"
|
||||
#include "logger.h"
|
||||
// #include <QSqlDatabase>
|
||||
// #include <QSqlQuery>
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue