DiagramDesigner/diagramCavas/include/graphicsItem/pluginItemWrapper.h

53 lines
1.6 KiB
C
Raw Normal View History

2026-03-26 16:22:35 +08:00
//pluginItemWrapper.h
#pragma once
#include "functionModelItem/graphicsFunctionModelItem.h"
#include "pluginCommon/iCanvasItem.h"
#include <QObject>
// 内部包装器,不暴露给外部
class PluginItemWrapper : public GraphicsFunctionModelItem
{
Q_OBJECT
public:
explicit PluginItemWrapper(ICanvasItem *pluginItem, QGraphicsItem *parent = nullptr);
virtual ~PluginItemWrapper();
// 克隆
virtual GraphicsFunctionModelItem* clone() const override;
// 绘图
virtual void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget = nullptr) override;
virtual QRectF boundingRect() const override;
virtual QPainterPath shape() const override;
// 几何操作
virtual void updateCoordinate() override;
virtual void resize(int handle, double dx, double dy, const QPointF &pos) override;
virtual void move(const QPointF &delta) override;
// 获取插件项
ICanvasItem* pluginItem() const;
protected:
virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
private:
ICanvasItem *m_pluginItem = nullptr;
QRectF m_cachedBounds;
void updateCache();
void connectSignals();
QVariantMap saveState() const;
bool loadStateIntoPluginItem(ICanvasItem *pluginItem, const QVariantMap &state) const;
void copyPropertiesFrom(const PluginItemWrapper *source);
private slots:
void onPluginBoundsChanged(const QRectF &newBounds);
void onPluginPropertyChanged(const QString &key, const QVariant &value);
};