logplus/logPlus/qmycustomplot.h

205 lines
7.9 KiB
C
Raw Normal View History

2025-10-29 17:23:30 +08:00
#ifndef QMYCUSTOMPLOT_H
#define QMYCUSTOMPLOT_H
#include "qcustomplot.h"
#include "LogIO.h"
//#include "TransparentDraggableRect.h"
#include "QCPSizeHandleManager.h"
2025-10-29 17:23:30 +08:00
#pragma execution_character_set("utf-8")
2026-01-04 16:54:55 +08:00
const int iFracType=15;
2025-10-29 17:23:30 +08:00
class QMyCustomPlot : public QCustomPlot
{
Q_OBJECT
public:
QMyCustomPlot(QWidget *parent = nullptr, QString strSlfName="", QString strWellName="", QString strTrackName="", QString strLineName="");
virtual ~QMyCustomPlot()
{
}
protected:
//virtual void mouseMoveEvent(QMouseEvent *event);
2025-10-29 17:23:30 +08:00
public:
2025-10-30 11:55:37 +08:00
QString m_strUuid;
2025-10-29 17:23:30 +08:00
QString m_strSlfName;
QString m_strWellName;
QString m_strTrackName;
QString m_strLineName;
//
float m_iX1, m_iX2;
float m_iY1, m_iY2;
2025-10-29 17:23:30 +08:00
//其他曲线
QString m_newFillType;
QString m_newTargetLine;
QColor m_newColor;
QString m_newLithosImage;
QString m_newHeadFill;
float m_vMin;
2025-11-05 18:15:33 +08:00
float m_vMax;
QString m_strOtherScaleType;
QString m_strScaleType="线性";//刻度类型(线性,对数)
QColor m_frontColor;//岩性前景色
QColor m_backColor;//岩性背景色
QString m_newFillMode;
bool m_bFillNow = true;
2025-10-29 17:23:30 +08:00
QContextMenuEvent *m_event;
bool m_bDrawRect = true;
2026-01-06 16:03:55 +08:00
bool m_bX2Y = true;
2025-12-25 15:10:14 +08:00
//
bool m_bDrawCore_PHYSICS = false; //岩心分析
int dataIndex = -1;
bool singleDragMove = false;
float singleOldPosition = 0;
public:
//分段刷新
QVector<double> m_x;
QVector<double> m_y;
int m_iCurNum=0;
int m_iSplitNum=2000; //2000000; //2000;
bool m_addRandomGraph=false;//当前是否绘制曲线 true:是。
bool m_bEditRect=false; //当前是否正在编辑曲线。
QMap<QString, QObject*> m_mapDraggable_Rect;
QMap<QString, QObject*> m_mapDraggable_Result;
QMap<QString, QObject*> m_mapDraggable_GeoLith;
2025-12-22 18:22:45 +08:00
QMap<QString, QObject*> m_mapDraggable_SwallCore;
2025-12-23 17:15:39 +08:00
QMap<QString, QObject*> m_mapDraggable_Gujing;
QMap<QString, QObject*> m_mapDraggable_Image;
QMap<QString, QObject*> m_mapDraggable_MFac;
QMap<QString, QObject*> m_mapDraggable_Phase;
QMap<QString, QObject*> m_mapDraggable_Fac;
QMap<QString, QObject*> m_mapDraggable_Guan;
QMap<QString, QObject*> m_mapDraggable_Jiegutext;
QMap<QString, QObject*> m_mapDraggable_Line;
QMap<QString, QObject*> m_mapDraggable_SelectRect;
QObject* m_SelectShiftLine=nullptr;//当前选中的分段线
public slots:
void slot_time();
2025-10-29 17:23:30 +08:00
public:
void init(QString strName, QVector<double> x, QVector<double> y);
2025-10-30 11:55:37 +08:00
void addImageToPlot(double left_Low, double right_Hight, const QString imagePath);
void addRandomGraph(QVector<double> x, QVector<double> y, QString strSlfName, QString strLineName, QString strAliasName, QString strUnit,
double newLeftScale, double newRightScale, QString strScaleType, QColor &newlineColor, double width, Qt::PenStyle lineStyle);
2025-10-29 17:23:30 +08:00
void addTextToPlot(double left_Low, double right_Hight, const QString strText, QColor crColor=QColor(255, 255, 255, 80));
2025-12-11 15:11:20 +08:00
void addResultToPlot(double left_Low, double right_Hight, QString myResult, QString &strUuid, QString strText="");
void addGeoLithToPlot(double left_Low, double right_Hight, const QString myLith, const QString myOil, const QString myColor);
2025-12-22 18:22:45 +08:00
void addSwallCoreToPlot(double Depth, QString LithologyImage, QString OilGasImage, QString ColorImage, double Sideleft, double width, int ind);
2025-12-23 17:15:39 +08:00
void addGujingToPlot(double left_Low, double right_Hight, const QString strResult);
void addJiegutextToPlot(double left_Low, double right_Hight, const QStringList strText, int &iMaxNum, QColor crColor=QColor(255, 255, 255, 80));
2026-01-06 16:03:55 +08:00
void addMFacToPlot(double left_Low, double right_Hight, const QString strText, QColor crColor=QColor(255, 255, 255, 80));
void addPhaseToPlot(double left_Low, double right_Hight, const QString strText, QColor crColor=QColor(255, 255, 255, 80));
void addFacToPlot(double left_Low, double right_Hight, const QString strText, QColor crColor=QColor(255, 255, 255, 80));
void addGuanToPlot(double left_Low, double right_Hight, const QString imagePath, float in);
void addLineToPlot(double left_Low, double right_Hight, const QString strText, QColor crColor=QColor(255, 255, 255, 80));
//框选并编辑曲线
void addSelectRectToPlot(double left_Low, double right_Hight, int left_Low_Number, int right_Hight_Number);
2025-10-29 17:23:30 +08:00
public slots:
void s_LineClicked(int index);
void onResetZoom();
void removeSelectedGraph();
void removeSelectedGraphByTitle();
void s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iTableType, QString strFormInfoType);
2025-10-29 17:23:30 +08:00
//属性
//左刻度
void s_ChangeLeftScale(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, double newLeftScale);
2025-10-29 17:23:30 +08:00
//右刻度
void s_ChangeRightScale(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, double newRightScale);
//刻度类型
void s_ChangeScaleType(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strScaleType);
2025-10-29 17:23:30 +08:00
//线颜色
void s_ChangeLineColor(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor);
2025-10-29 17:23:30 +08:00
//线宽
void s_ChangeLineWidth(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, double width);
2025-10-29 17:23:30 +08:00
//线型
void s_ChangeLineStyle(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, Qt::PenStyle lineStyle);
2025-10-29 17:23:30 +08:00
//岩性填充-不填充
void s_ClearFillMode(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
2025-10-29 17:23:30 +08:00
//岩性填充-填充
void s_ChangeFillMode(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
2025-10-29 17:23:30 +08:00
QString newFillType, QString newTargetLine, QColor newColor, QString newLithosImage, QString newHeadFill,
float vMin, float vMax, QString strOtherScaleType, QColor frontColor, QColor backColor, QString newFillMode, bool bFillNow);
2025-10-29 17:23:30 +08:00
//右键--添加分段线
void onAddShiftLine();
//校深线段
void s_AddShifLineToPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, double left_Low, double right_Hight);
//右键--清除当前分段线
void onDelSelectShiftLine();
//清除当前分段线
void s_DelSelectShiftLineFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//右键--清除全部分段线
void onDelAllShiftLine();
//清除全部分段线
void s_DelAllShiftLineFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//右键--编辑曲线
void onEditLine();
//执行校正
void s_RuncorFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
2026-01-30 09:47:13 +08:00
//执行拼接
void s_MergeFromPlot(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);
//Plot重新加载数据
void s_ReloadPlot(QString strUuid, QString strSlfName, QString strLineName);
2025-10-29 17:23:30 +08:00
void onAddRect();
//蝌蚪图重绘网格线
void drawCustomElements();
2025-10-29 17:23:30 +08:00
public:
//蝌蚪图重绘网格线
bool mKedou = false;
2025-10-29 17:23:30 +08:00
//
bool mMousePress = false;
QPoint mLastPos;
QCPSizeHandleManager *mSizeHandleManager;
2025-10-29 17:23:30 +08:00
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
2025-12-25 15:10:14 +08:00
//单点移动功能
void executeSingle(QMouseEvent *event);
2025-10-29 17:23:30 +08:00
virtual void contextMenuEvent(QContextMenuEvent *event);
private:
};
#endif // QMYCUSTOMPLOT_H