55 lines
1.5 KiB
C++
55 lines
1.5 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);
|
|
|
|
signals:
|
|
void positionChanged(const QPointF& newPosition);
|
|
|
|
private:
|
|
QString m_id;
|
|
const QString m_parentEntityId;
|
|
const TerminalType m_type;
|
|
QString m_name;
|
|
QPointF m_relativePosition;
|
|
};
|
|
#endif //POWERTERMINAL_H
|