logplus/logPlus/TransparentDraggableCorePhysics.h
2026-03-30 15:20:41 +08:00

186 lines
5.0 KiB
C++

#ifndef TRANSPARENTDRAGGABLECOREPHYSICS_H
#define TRANSPARENTDRAGGABLECOREPHYSICS_H
#include <QObject>
#include "qmycustomplot.h"
#include <QString>
#include <QMenu>
#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; // 刻度类型
// 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