#ifndef TRANSPARENTDRAGGABLECRACKOBJECT_H #define TRANSPARENTDRAGGABLECRACKOBJECT_H #include #include "qmycustomplot.h" #include class TransparentDraggableCrackObject : public QObject { Q_OBJECT public: explicit TransparentDraggableCrackObject(QMyCustomPlot *parentPlot, const QString &strUuid = "", double depth = 0); ~TransparentDraggableCrackObject(); protected: bool eventFilter(QObject *obj, QEvent *event) override; private: static QList s_allCurves; // 所有曲线实例 static TransparentDraggableCrackObject* s_activeCurve; // 当前活动曲线 QMyCustomPlot *mPlot; QCPItemCurve *mCurve; double m_depth; double m_endX; double m_orig_x1, m_orig_x2; double m_orig_y1, m_orig_y2; double m_orig_startX, m_orig_endX; double m_orig_startDirX, m_orig_startDirY; double m_orig_endDirX, m_orig_endDirY; double m_offsetX; double m_offsetY; QCPItemTracer *m_tracer1; QCPItemTracer *m_tracer2; enum DragState { Idle, DraggingPoint1, DraggingPoint2, DraggingCurve }; DragState m_dragState = Idle; QPointF m_lastDragPixel; void updateCurveFromTargets(); void updateCurvePosition(); void updateTracers(); void setTracerHighlight(QCPItemTracer *tracer, bool highlight); }; #endif