DiagramDesigner/common/include/pluginCommon/iPluginAdapter.h

53 lines
1.4 KiB
C
Raw Normal View History

2026-03-26 16:22:35 +08:00
//iPluginAdapter.h
#pragma once
#include <QObject>
#include <QPainter>
#include <QRectF>
#include <QPainterPath>
// 插件适配器抽象接口
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();
};