|
- #pragma once
- #include <QVariantMap>
- #include "hmicontrolitem.h"
- #include <QGraphicsSceneMouseEvent>
-
- // HMI按钮控件类,继承自HmiControlItem,实现按钮特有的功能
- class HmiButton : public HmiControlItem {
- Q_OBJECT
- public:
- // 构造函数,初始化按钮控件
- explicit HmiButton(QGraphicsItem* parent = nullptr);
-
- // 返回按钮的边界矩形(固定大小80x40,带调整边距)
- 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/OFF颜色(给现有创建/粘贴流程用)
- void setOnColor(const QColor& color) { m_buttonOnColor = color; update(); }
- void setOffColor(const QColor& color) { m_buttonOffColor = color; update(); }
-
- // 设置按钮ON/OFF;当状态发生变化时,会发出 stateChanged() 供 Modbus 写线圈
- void setButtonState(bool on);
-
- signals:
- void stateChanged(bool on); // 新增:按钮状态变化信号
-
- protected:
-
- // 右键菜单(保留已有:复制/删除/置ON/置OFF/改颜色/设置寄存器)
- void createContextMenu(QMenu& menu) override;
-
- private:
- bool m_isButtonOn = false; // 按钮状态(true为ON,false为OFF)
- QColor m_buttonOnColor = Qt::blue; // ON状态颜色
- QColor m_buttonOffColor = Qt::lightGray; // OFF状态颜色
- };
|