DiagramDesigner/diagramCavas/include/powerTerminal.h

58 lines
1.7 KiB
C++

#ifndef POWERTERMINAL_H
#define POWERTERMINAL_H
/****************************
* 拓扑元件的接线口,拓扑关系的精确表示
* *************************/
#include <QObject>
#include <QPointF>
#include <QJsonObject>
#include <QUuid>
enum class TerminalType {
PowerInput,
PowerOutput,
PowerConnect,
ControlSignal,
ProtectiveGround
};
class PowerTerminal : public QObject {
Q_OBJECT
public:
explicit PowerTerminal(const QString& parentEntityId,
TerminalType type,
const QString& name,
const QPointF& relativePos = QPointF(),
const QString& uuid = "",
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;}
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生成
};
#endif //POWERTERMINAL_H