//iPluginAdapter.h #pragma once #include #include #include #include // 插件适配器抽象接口 class IPluginAdapter : public QObject { Q_OBJECT public: explicit IPluginAdapter(QObject *parent = nullptr) : QObject(parent) {} virtual ~IPluginAdapter() = default; // 基本属性 virtual QString adapterType() const = 0; virtual QString pluginType() const = 0; // 几何属性 virtual QRectF bounds() const = 0; virtual void setBounds(const QRectF &bounds) = 0; // 绘制 virtual void paint(QPainter *painter, const QRectF &bounds) = 0; // 形状 virtual QPainterPath shape() const = 0; // 属性访问 virtual QVariant property(const QString &key) const = 0; virtual void setProperty(const QString &key, const QVariant &value) = 0; // 操作 virtual void move(const QPointF &delta) = 0; virtual void resize(const QRectF &newBounds) = 0; // 状态 virtual bool isSelected() const = 0; virtual void setSelected(bool selected) = 0; // 序列化 virtual QVariantMap saveState() const = 0; virtual bool loadState(const QVariantMap &state) = 0; signals: void boundsChanged(const QRectF &newBounds); void propertyChanged(const QString &key, const QVariant &value); void selectionChanged(bool selected); void adapterChanged(); };