#pragma once // 防止头文件重复包含 #include // 基类:图形项 #include // 鼠标事件类 // 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; };