#pragma once #include #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状态颜色 };