52 lines
1.4 KiB
C++
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
|