#pragma once #include #include #include #include #include #include #include #include #include #include #include "global.h" #include "GlobalDefine.h" class MyQGraphicsEllipseItem : public QObject, public QGraphicsEllipseItem { Q_OBJECT public: enum TransformType { NONE, MOVE, SCALE }; int Id() const { return m_id; } void Id(int val) { m_id = val; } double CircleX() const { return m_circleX; } void CircleX(double val) { m_circleX = val; } double CircleY() const { return m_circleY; } void CircleY(double val) { m_circleY = val; } double Diameter() const { return m_diameter; } void Diameter(double val) { m_diameter = val; } public: MyQGraphicsEllipseItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = nullptr) : QGraphicsEllipseItem(parent) { // 设置椭圆的位置和大小 QRectF rect(x, y, width, height); setRect(rect); } ~MyQGraphicsEllipseItem(); signals: void signal_select(int id); public: void SetCircleAttr(double x1, double y1, double width, double height); void SetCircleInterfaceAttr(double x1, double y1, double dia); protected: void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; void mousePressEvent(QGraphicsSceneMouseEvent *event) override; void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; private: int m_id; double m_circleX; double m_circleY; double m_diameter; double m_backupDiameter; TransformType m_translteType; QPointF m_mousePressDownPos; //鼠标按下时在场景中的位置 double m_initScale = 1.0; double m_nowScale = 0; };