#ifndef POWERTERMINAL_H #define POWERTERMINAL_H /**************************** * 拓扑元件的接线口,拓扑关系的精确表示 * *************************/ #include #include #include #include enum class TerminalType { PowerInput, PowerOutput, PowerConnect, ControlSignal, ProtectiveGround, NewTral }; class PowerTerminal : public QObject { Q_OBJECT public: explicit PowerTerminal(const QString& parentEntityId, TerminalType type, const QString& name, const QPointF& relativePos = QPointF(), const QString& uuid = "", const double dPerX = 0.0, const double dPerY = 0.0, QObject* parent = nullptr); // 属性访问 void setId(const QString& sId){m_id = sId;} QString id() const { return m_id; } QString parentEntityId() const { return m_parentEntityId; } TerminalType type() const { return m_type; } QString name() const { return m_name; } QPointF relativePosition() const { return m_relativePosition; } // 设置相对位置 void setRelativePosition(const QPointF& newPos); // 序列化 QJsonObject toJson() const; static PowerTerminal* fromJson(const QJsonObject& json, QObject* parent = nullptr); void setGenerateBy(const QString& sName) {m_generateBy = sName;} QString getGenerateBy() {return m_generateBy;} void setPerX(double d) {m_dPerX = d;} double getPerX() {return m_dPerX;} void setPerY(double d) {m_dPerY = d;} double getPerY() {return m_dPerY;} void setPortLocate(int n) {m_portLocate = n;} int getPortLocate() {return m_portLocate;} signals: void positionChanged(const QPointF& newPosition); private: QString m_id; const QString m_parentEntityId; const TerminalType m_type; QString m_name; QPointF m_relativePosition; QString m_generateBy; //被哪个Terminal生成 double m_dPerX = 0.0; //横向百分比位置 double m_dPerY = 0.0; //纵向百分比位置 int m_portLocate = 0; //所处位置(上下左右) }; #endif //POWERTERMINAL_H