#ifndef TRANSPARENTDRAGGABLECOREPHYSICS_H #define TRANSPARENTDRAGGABLECOREPHYSICS_H #include #include "qmycustomplot.h" #include #include #pragma execution_character_set("utf-8") // 强制指定执行字符集为 UTF-8 //曲线校深--线段 class TransparentDraggableCorePhysics : public QObject { Q_OBJECT public: explicit TransparentDraggableCorePhysics(QMyCustomPlot *parentPlot, QString strUuid="", double minWidth = 5.0, QString strTitle = ""); ~TransparentDraggableCorePhysics(); //设置最小宽度 void setMinWidth(double minWidth); //设置标题 void setTitle(QString strTitle); // 设置矩形范围 void setRange(double left_Low, double right_Hight, double lY2, bool bReplot=false); // 获取当前范围 void getRange(); // 设置矩形颜色 void setColor(const QColor &color); // 删除框图 void deleteRect(); void update(); // Getter & Setter int getCpOrder() const; void setCpOrder(int value); double getCpDepth() const; void setCpDepth(double value); double getCpCorrDepth() const; void setCpCorrDepth(double value); double getCpCoreValue() const; void setCpCoreValue(double value); // double getCpRotationAngle() const; // void setCpRotationAngle(double value); // QString getCpDisplayName() const; // void setCpDisplayName(const QString &value); int getCpLineWidth() const; void setCpLineWidth(int value); QColor getCpLineColor() const; void setCpLineColor(QColor value); Qt::PenStyle getCpLineStyle() const; void setCpLineStyle(Qt::PenStyle value); double getCpLeftScale() const; void setCpLeftScale(double value); double getCpRightScale() const; void setCpRightScale(double value); int getCpScaleType() const; void setCpScaleType(int value); // int getCpScaleDivisionsOrCustom() const; // void setCpScaleDivisionsOrCustom(int value); QString getCpDisplayUnit() const; void setCpDisplayUnit(const QString &value); QString getCpCurveName() const; void setCpCurveName(const QString &value); QString getCpCurveUnit() const; void setCpCurveUnit(const QString &value); QFont getCpCurveScale() const; void setCpCurveScale(QFont value); bool getCpDrawAsBar() const; void setCpDrawAsBar(bool value); bool getCpLeftBoundary() const; void setCpLeftBoundary(bool value); bool getCpSkipZeroInvalidValues() const; void setCpSkipZeroInvalidValues(bool value); bool getCpDrawEnvelope() const; void setCpDrawEnvelope(bool value); bool getCpDrawAsDot() const; void setCpDrawAsDot(bool value); int getCpSymbolType() const; void setCpSymbolType(int value); QColor getCpSymbolBorderColor() const; void setCpSymbolBorderColor(QColor value); int getCpSymbolSize() const; void setCpSymbolSize(int value); QColor getCpSymbolFillColor() const; void setCpSymbolFillColor(QColor value); // int getCpFieldName() const; // void setCpFieldName(const int &value); signals: void rangeChanged(QCPRange newRange); private: // double m_cp_rotationAngle; // 旋转角度 // QString m_cp_displayName; // 显示名称 int m_cp_lineWidth; // 线宽 QColor m_cp_lineColor; // 线条颜色 Qt::PenStyle m_cp_lineStyle; // 线型 double m_cp_leftScale = 0; // 左刻度 double m_cp_rightScale = 100; // 右刻度 int m_cp_scaleType = 0; // 刻度类型 // int m_cp_scaleDivisionsOrCustom; // 等分刻度数或自定序列 QString m_cp_displayUnit; // 显示单位 QString m_cp_curveName; // 曲线名称 QString m_cp_curveUnit; // 曲线单位 QFont m_cp_curveScale; // 曲线刻度 bool m_cp_drawAsBar; // 杆状 bool m_cp_leftBoundary; // 左界 bool m_cp_skipZeroInvalidValues; // 不绘零等无效值 bool m_cp_drawEnvelope; // 绘制包络线 bool m_cp_drawAsDot; // 点状 int m_cp_symbolType; // 符号类型 QColor m_cp_symbolBorderColor; // 边框颜色 int m_cp_symbolSize; // 大小 QColor m_cp_symbolFillColor; // 填充颜色 // int m_cp_fieldName; // 字段名称 // 这四个是slf文件保存读取的 int m_cp_order; // 序号 double m_cp_depth; // 深度 double m_cp_corrDepth; // 校正深度 double m_cp_coreValue; // 数值 void initRect(); void updateHandles() ; private slots: void onDelRect(); void onMousePress(QMouseEvent *event); void onMouseMove(QMouseEvent *event); void onMouseRelease(QMouseEvent *event); public: // 父级组件 QMyCustomPlot *mPlot; // 当前组件 QCPItemLine *qcpItemLine; QCPItemTracer *tracer; QString mstrTitle=""; QString m_strUuid = ""; enum DragMode { DragNone, DragLeft, DragRight, DragRect }; DragMode mDragMode = DragNone; //double mDragStartX = 0; double mDragStartY = 0; double m_left_Low = 0; double m_right_Hight = 0; double m_lY1 = 0; // 添加最小宽度成员变量 double mMinWidth; }; #endif // TRANSPARENTDRAGGABLECOREPHYSICS_H