|
- #pragma once
- #include <QVariantMap>
- #include "hmicontrolitem.h"
-
- // HMI指示灯控件类,继承自HmiControlItem,实现指示灯特有的功能
- class HmiLed : public HmiControlItem {
- Q_OBJECT
- public:
- // 构造函数,初始化指示灯控件
- explicit HmiLed(QGraphicsItem* parent = nullptr);
-
- // 返回指示灯的边界矩形(固定大小60x60,带调整边距)
- QRectF boundingRect() const override;
-
- // 绘制指示灯(根据ON/OFF状态绘制不同颜色)
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
-
- // 返回控件类型(固定为“指示灯”)
- QString getItemType() const override { return "指示灯"; }
-
- // 保存指示灯数据到剪贴板(位置、缩放、状态、颜色等)
- QVariantMap saveToClipboard() const override;
-
- // 设置ON状态颜色,触发重绘
- void setOnColor(const QColor& color) { m_ledOnColor = color; update(); }
-
- // 设置OFF状态颜色,触发重绘
- void setOffColor(const QColor& color) { m_ledOffColor = color; update(); }
-
- // 设置指示灯状态(ON/OFF),供外部调用(如寄存器状态变化),触发重绘
- void setLedState(bool on);
-
- protected:
- // 返回宽高比(指示灯为正方形,固定为1.0)
- qreal getAspectRatio() const override { return 1.0; }
-
- // 创建指示灯的右键菜单(包含复制、删除、颜色设置等,不包含置ON/OFF)
- void createContextMenu(QMenu& menu) override;
-
- private:
- bool m_isLedOn = false; // 指示灯状态(true为ON,false为OFF)
- QColor m_ledOnColor = Qt::green; // ON状态颜色
- QColor m_ledOffColor = Qt::red; // OFF状态颜色
- };
|