#ifndef TOPOLOGYVIEW_H #define TOPOLOGYVIEW_H #include #include #include "global.h" QT_BEGIN_NAMESPACE namespace Ui { class topologyView; } QT_END_NAMESPACE class TopologyTree; class ExtraPropertyManager; class StructDataSource; class TopologyView : public QDialog { Q_OBJECT public: TopologyView(QWidget *parent = nullptr); ~TopologyView(); void initial(); void loadTopologyFromDB(); //加载拓扑关系 signals: void entityCreate(EntityInfo); void entityChange(EntityInfo); void entityDelete(EntityInfo); void entitySelected(EntityInfo); public slots: void onItemChanged(QStandardItem *item); void onItemClicked(const QModelIndex &index); void onUpdateTopology(QList lst,bool refresh); private: void clearItems(); QString getLevelType(int index); void buildTreeStructure(QStandardItemModel* model, const QVector& properties); QVector getPropertiesForNode(QStandardItem* node); QString getNodeInfo(QStandardItem* node); QStandardItem* findBayItem(const QString& voltageLevel, const QString& bayName); QStandardItem* findOrCreateVoltageLevel(const QString& voltageLevel); // 查找或创建电压层级节点 QStandardItem* createBayItem(const QString& voltageLevel, const RelationSturctItem& bayInfo); void createDeviceItem(QStandardItem* pParent, const RelationSturctItem& deviceInfo); // 创建设备节点 private: Ui::topologyView *ui; QStandardItemModel* _treeModel; ExtraPropertyManager* _pExtraProManager; StructDataSource* m_dataSource; TopologyTree* _treeView; QHash m_mapVoltageLevels; // 存储电压层级名称到树节点的映射 QHash m_mapBayItems; // 存储间隔节点,key格式为"电压层级|间隔名称" }; #endif