|
- #pragma once // 防止头文件重复包含
-
- #include <QGraphicsItem> // 基类:图形项
- #include <QGraphicsSceneMouseEvent> // 鼠标事件类
-
- // PLC控件类型枚举
- enum class PlcControlType {
- NormallyOpen, // 常开
- NormallyClosed, // 常闭
- Coil, // 线圈
- Compare // 比较
- };
-
- // PLC控件图形项类
- class PlcControlItem : public QGraphicsItem {
- public:
- // 构造函数:type为控件类型,parent为父图形项
- PlcControlItem(PlcControlType type, QGraphicsItem* parent = nullptr);
-
- // 重写:返回边界矩形
- QRectF boundingRect() const override;
- // 重写:绘制图形项
- void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*) override;
-
- protected:
- // 重写:鼠标按下事件
- void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
- // 重写:鼠标移动事件
- void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
-
- private:
- // 控件类型
- PlcControlType m_type;
- // 拖拽起始位置
- QPointF m_dragStartPos;
- };
|