logplus/logPlus/TransparentDraggableCrackObject.h
2026-04-14 11:03:11 +08:00

52 lines
1.4 KiB
C++

#ifndef TRANSPARENTDRAGGABLECRACKOBJECT_H
#define TRANSPARENTDRAGGABLECRACKOBJECT_H
#include <QObject>
#include "qmycustomplot.h"
#include <QList>
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<TransparentDraggableCrackObject*> 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