您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

37 行
1.1 KiB

  1. #pragma once // 防止头文件重复包含
  2. #include <QGraphicsItem> // 基类:图形项
  3. #include <QGraphicsSceneMouseEvent> // 鼠标事件类
  4. // PLC控件类型枚举
  5. enum class PlcControlType {
  6. NormallyOpen, // 常开
  7. NormallyClosed, // 常闭
  8. Coil, // 线圈
  9. Compare // 比较
  10. };
  11. // PLC控件图形项类
  12. class PlcControlItem : public QGraphicsItem {
  13. public:
  14. // 构造函数:type为控件类型,parent为父图形项
  15. PlcControlItem(PlcControlType type, QGraphicsItem* parent = nullptr);
  16. // 重写:返回边界矩形
  17. QRectF boundingRect() const override;
  18. // 重写:绘制图形项
  19. void paint(QPainter* painter, const QStyleOptionGraphicsItem*, QWidget*) override;
  20. protected:
  21. // 重写:鼠标按下事件
  22. void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
  23. // 重写:鼠标移动事件
  24. void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
  25. private:
  26. // 控件类型
  27. PlcControlType m_type;
  28. // 拖拽起始位置
  29. QPointF m_dragStartPos;
  30. };