DiagramDesigner/common/include/pluginCommon/iCanvasItem.h

33 lines
773 B
C++

//ICanvasItem.h
#pragma once
#include <QObject>
#include <QRectF>
#include <QPainter>
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);
};