#ifndef TRANSPARENTGROUPRESUL_H #define TRANSPARENTGROUPRESUL_H #include #include "qmycustomplot.h" #include #include #include "geometryutils.h" #include #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& 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(); int getNResult(); //设置解释结论 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& getVecResult(); const QMap& 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=""; int m_nResult; 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 m_vecResult; QMap m_mapDraggable_Result; bool m_bArrow = false; bool m_bMoveRect = false; }; #endif // TRANSPARENTGROUPRESUL_H