//pluginSvgItemWrapper.h #pragma once #include "functionModelItem/electricFunctionModelSvgItem.h" #include "pluginCommon/iCanvasItem.h" #include // 内部包装器,不暴露给外部 class PluginSvgItemWrapper : public ElectricFunctionModelSvgItem { Q_OBJECT public: explicit PluginSvgItemWrapper(ICanvasItem *pluginItem, QGraphicsItem *parent = nullptr); virtual ~PluginSvgItemWrapper(); virtual void setImage_1(QFileInfo) override; // 克隆 virtual ElectricFunctionModelSvgItem* 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 PluginSvgItemWrapper *source); private slots: void onPluginBoundsChanged(const QRectF &newBounds); void onPluginPropertyChanged(const QString &key, const QVariant &value); };