53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
//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();
|
|
};
|