//ICanvasItem.h #pragma once #include #include #include class ICanvasItem : public QObject { Q_OBJECT public: virtual ~ICanvasItem() = default; // 基本信息 virtual QString typeId() const = 0; virtual QString displayName() const = 0; // 几何属性 virtual QRectF bounds() const = 0; virtual void setBounds(const QRectF &rect) = 0; // 绘制 virtual void draw(QPainter *painter, const QRectF &rect) = 0; // 属性管理 virtual QVariant property(const QString &key) const = 0; virtual void setProperty(const QString &key, const QVariant &value) = 0; signals: void boundsChanged(const QRectF &newBounds); void propertyChanged(const QString &key, const QVariant &value); };