#ifndef TOPOLOGYMANAGER_H #define TOPOLOGYMANAGER_H /**************************** * 拓扑关系管理类 * *************************/ #include #include #include "powerConnection.h" #include "powerTerminal.h" #include "global.h" class PowerEntity; class TopologyManager : public QObject { Q_OBJECT public: static TopologyManager& instance(); // 实体管理 PowerEntity* createEntity(EntityType type,const QString& uuid,const QString& name); PowerEntity* findEntity(const QString& id) const; bool deleteEntity(const QString& id); // 序列化 QJsonObject serialize() const; void deserialize(const QJsonObject& json); // 连接管理 PowerConnection* createConnection(const QString& uuid,const QString& fromId, const QString& toId); QList getConnectionsForElement(const QString& elementId) const; void removeConnection(const QString& connId); // 连接查询接口 QList connectionsFrom(const QString& elementId) const; QList connectionsTo(const QString& elementId) const; QList getConnectionsFor(const QString& entityId) const; void saveToDB(const QString& path); void loadFromDB(const QString& path); PowerEntity* getEntity(const QString& id) const; QList findEntitiesByName(const QString& name) const; public: // 接线点管理 PowerTerminal* createTerminal(const QString& parentEntityId, TerminalType type, const QString& name, const QPointF& relPos = QPointF()); bool deleteTerminal(const QString& terminalId); PowerTerminal* getTerminal(const QString& terminalId) const; QList getTerminalsForEntity(const QString& entityId) const; signals: void entityCreated(const QString&); void entityDeleted(const QString&); void connectionCreated(const QString&); void connectionRemoved(const QString&); private: explicit TopologyManager(QObject* parent = nullptr); ~TopologyManager(); void clearAllData(); QHash m_entities; // ID到实体映射 QHash m_views; // 组态图视图存储 // 连接存储 QHash m_connections; QMultiHash m_connectionIndex; // 元素ID到连接的映射 private: QHash m_allTerminals; // ID到接线点映射 QHash> m_terminalsByEntity; // 实体ID到接线点列表 }; #endif