|
- #ifndef CUSTOMGRAPHICS_H
- #define CUSTOMGRAPHICS_H
-
- #include <QGraphicsObject>
- // 只需要前向声明,因为头文件中只用到了指针
- class QPainter;
- class QGraphicsSceneMouseEvent;
- class QGraphicsSceneContextMenuEvent;
-
- enum class ComponentType {
- Button,
- Indicator
- };
-
- // HMI组件基类
- class HmiComponent : public QGraphicsObject
- {
- Q_OBJECT
- Q_PROPERTY(QColor color READ color WRITE setColor)
- Q_PROPERTY(QString componentName READ componentName WRITE setComponentName)
-
- signals:
- void selected(HmiComponent* item);
- // 为复制和删除请求添加信号
- void copyRequested(HmiComponent* item);
- void deleteRequested(HmiComponent* item);
- void appearanceChangedRequested(HmiComponent* item);
-
- public:
- explicit HmiComponent(QGraphicsItem *parent = nullptr);
-
- void setColor(const QColor& color);
- QColor color() const;
- void setComponentName(const QString& name);
- QString componentName() const;
-
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
-
- public slots:
- void changeAppearance();
-
- protected:
- void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
- // 重写上下文菜单事件
- void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
- virtual void paintShape(QPainter* painter) = 0;
-
- protected:
- QColor m_color;
- QString m_componentName;
- };
-
-
- // 按钮类
- class HmiButton : public HmiComponent
- {
- public:
- HmiButton(QGraphicsItem *parent = nullptr);
- QRectF boundingRect() const override;
-
- protected:
- void paintShape(QPainter *painter) override;
- };
-
- // 指示灯类
- class HmiIndicator : public HmiComponent
- {
- public:
- HmiIndicator(QGraphicsItem *parent = nullptr);
- QRectF boundingRect() const override;
-
- protected:
- void paintShape(QPainter *painter) override;
- };
-
- #endif // CUSTOMGRAPHICS_H
|