33 lines
773 B
C++
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);
|
|
};
|