logplus/logPlus/TransparentGroupResult.h

155 lines
3.9 KiB
C++

#ifndef TRANSPARENTGROUPRESUL_H
#define TRANSPARENTGROUPRESUL_H
#include <QObject>
#include "qmycustomplot.h"
#include <QString>
#include <QMenu>
#include "geometryutils.h"
#include <QSvgRenderer>
#pragma execution_character_set("utf-8") // 强制指定执行字符集为 UTF-8
class TransparentDraggableResult;
class TransparentGroupResult : public QObject
{
Q_OBJECT
public:
explicit TransparentGroupResult(QMyCustomPlot *parentPlot, TransparentGroupResult *upDraggableResult=nullptr, QString strUuid="", double minWidth = 1.0, QString strTitle = "");
~TransparentGroupResult();
enum DragMode { DragNone, DragLeft, DragRight, DragItem, DragRect };
void addResultToPlot(double left_Low, double right_Hight, QString myResult, QString &strUuid, int ninsertIdx = -1);
QString getIconName(const QMap<QString, QString>& zoneOrder, const QString& result_str, int nidx, double dMDepth);
void addAllResultToPlot(LAYER_DATA* pResult);
void removeAllResult();
//设置最小宽度
void setMinWidth(double minWidth);
//设置标题
void setTitle(QString strTitle);
QString getTitle();
void setRemark(QString remark);
QString getRemark();
//设置解释结论
void setResult(QString filePath);
//void drawResult(double left_Low, double right_Hight, double lY1, double lY2);
// 设置矩形范围
void setRange(double left_Low, double right_Hight);
void setDragRange(double left_Low, double right_Hight);
// 获取当前范围
QCPRange getRange();
// 设置结论占比%
void setGroupConclusionProportion(int nCopr);
// 设置显示位置
void setGroupShowPos(int nSPos);
// 设置层号显示
void setFloorVisible(bool bs);
// 设置层号字体
void setFloorFont(QFont f);
// 设置层号旋转
void setFloorRot(double dr);
//设置顶深, 底深
void setDragRect(int dMode, double dragVal);
//设置解释结论
void setDragResult(int nidx, QString strResult);
//设置分段深度
void setDragDepth(int nidx, double dDepth);
// 删除框图
void deleteRect();
void setSelectRect(bool bselect);
// 获取选定状态
bool getSelect();
// 获取组内解释结论索引
int getDraggableResultIndex(double depth);
// 层内层
void segmentationInnerLayer(double depth);
// 分割为独立层
void segmentationIndependentLayer(double depth);
// 拆分复合层成独立层
void splitIndependentLayer();
int getCursor();
// 获取油气结论
QString getOilGasConclusion(int nidx);
// 获取分段点深度
QString getOilGasDepth(int nidx);
const QVector<QString>& getVecResult();
const QMap<QString, QObject*>& getMapDraggable_Result();
signals:
void rangeChanged(QCPRange newRange);
private:
void initRect();
void updateHandles() ;
TransparentDraggableResult* getSelectItemResult(QPoint pt);
private slots:
void onDelRect();
void onMousePress(QMouseEvent *event);
void onMouseMove(QMouseEvent *event);
void onMouseRelease(QMouseEvent *event);
//
void onMouseMove_in(QMouseEvent *event);
void onMouseRelease_in(QMouseEvent *event);
double getMyLower();
double getMyUpper();
private:
QMyCustomPlot *mPlot;
QCPItemRect *mRect;
QCPItemRect *mLeftHandle;
QCPItemRect *mRightHandle;
QCPItemRect *mDragRect;
QCPItemStraightLine* mDragLine = NULL;
TransparentDraggableResult* m_pDragResult = NULL;
QCPItemText *mItemTitle;
QString mstrTitle="";
QString m_strUuid = "";
QString m_Result;
QString m_Remark="";
bool m_bSelect = false;
DragMode mDragMode = DragNone;
//double mDragStartX = 0;
double mDragStartY = 0;
QCPRange mDragStartRange;
// 添加最小宽度成员变量
double mMinWidth;
// 设置结论占比%
int m_nConclusionProportion = 50;
// 显示位置cm
int m_nShowPos = 0;
QVector<QString> m_vecResult;
QMap<QString, QObject*> m_mapDraggable_Result;
bool m_bArrow = false;
bool m_bMoveRect = false;
};
#endif // TRANSPARENTGROUPRESUL_H