logplus/logPlus/mainwindowcurve.h

231 lines
7.4 KiB
C
Raw Normal View History

2025-10-29 17:23:30 +08:00
#ifndef MAINWINDOWCURVE_H
#define MAINWINDOWCURVE_H
#include <QMainWindow>
#include "formwell.h"
#include "geometryutils.h"
#include "formmultiheads.h"
#include "qtprojectwidgets.h"
#include "CurveLine.h"
2025-10-29 17:23:30 +08:00
#pragma execution_character_set("utf-8")
struct SelectTableItem
{
int m_iTableType=0; // 当前选中数据表格的类型1:井次, 2:道, 3:曲线\表格\波列\参数卡
QString m_strUuid="";
QString m_strWellName="";
QString m_strSlfName="";
QString m_strTrackName="";
QString m_strLineName="";
QString m_strFormInfoType="";//类型curve, wave
};
2025-10-29 17:23:30 +08:00
namespace Ui {
class MainWindowCurve;
}
class MainWindowCurve : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindowCurve(QWidget *parent = nullptr);
~MainWindowCurve();
private:
Ui::MainWindowCurve *ui;
protected:
//支持复制粘贴,暂时还未实现
void keyPressEvent(QKeyEvent * e);
public:
//图头
bool eventFilter(QObject* obj, QEvent* event);
void onPasteExcelData();
2025-10-29 17:23:30 +08:00
public slots:
void dragEnterEvent(QDragEnterEvent* event);
void dragMoveEvent(QDragMoveEvent* event);
void dropEvent(QDropEvent* event);
//图头
void copy();
void Paste();
//鼠标滚动,通知可视解释窗口
void s_mouseWheel(QWheelEvent *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
QStringList m_listWell;
//当前选中数据表格
SelectTableItem m_SelectTableItem;
2025-10-29 17:23:30 +08:00
//当前选中,标准曲线
SelectTableItem m_LeftCurve;
//当前选中,主校曲线
SelectTableItem m_RightCurve;
//从校曲线
QList<SelectTableItem> m_ShiftCurves;
//曲线拼接线列表
QVector<CurveLine*> m_mergeLineList;
FormMultiHeads *m_formMultiHeads;
QDockWidget *m_dock1;
QtProjectWidgets *m_leftWidgets = NULL; //左侧工程区
QLineEdit *spinbox1;
QLineEdit *spinbox2;
QLineEdit *spinbox3;
2026-01-23 18:20:18 +08:00
int m_iScale=200;
double m_iY1=0;
double m_iY2=0;
public:
//展示所有井
void DisplayWells(QJsonArray wellsArray);
//展示其中一口井
void DisplayWell_One(QJsonObject wellObjInfo);
//展示所有道
void DisplayTracks(QJsonArray tracksArray);
2026-01-29 09:44:32 +08:00
void DisplayTrack_Top(int id, QJsonObject trackTop, QJsonObject trackInfo);
2026-01-29 09:44:32 +08:00
//展示其中一道
void DisplayTrack_One(QJsonObject trackObjInfo, QString strTrackName, int nW);
//展示所有曲线
void DisplayLines(QJsonArray linesArray, QString strTrackName, int nW);
//展示其中一条曲线
void DisplayLine_One(QJsonObject lineObjInfo, QString strTrackName);
void DisplayType_One(QJsonObject lineObjInfo, QString strTrackName, int nW);
void Open(QString fileFull);//打开
2025-10-29 17:23:30 +08:00
public:
//样式
void loadStyle(const QString &qssFile);
//初始化工具栏
void initMainToolBar();
void initToolBar();
void initToolBar_2();
2025-10-29 17:23:30 +08:00
// 返回 strWellName << strSlfName
QStringList insertCol(int nW);
2025-12-30 17:38:11 +08:00
// 返回 strWellName << strSlfName
QStringList getSelectWell();
2025-10-29 17:23:30 +08:00
//停靠
void dockLayout();
//新建井+道+曲线(首条)
void NewWellAndTrack(QString strWellName, QString strSlfName, QString strLineName, QString strType);
2025-10-29 17:23:30 +08:00
QJsonObject makeJson();
QStringList getLineList(QString strWellName, QString strTrackName);
2025-10-29 17:23:30 +08:00
signals:
void sig_NewTrackChangeWidth(QString strWellName, int nW=0);//新建道后,改变井宽
void sig_NewWell(QString strWellName);
2025-10-29 17:23:30 +08:00
public slots:
void slot_time();
//改变缩放比例
void s_changeScale(QString strUuid, int iNewScale);
//改变深度
void s_changeDepth(QString strUuid, QString strSlfName, QString strWellName, int iY1, int iY2);
//改变道宽
void s_changeWidth(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, int iCurrentCol, int iNewWidth);
2026-01-29 09:44:32 +08:00
//改变属性
void s_changeTrackProperty(QVariantList vlist);
void onItemClicked(QTableWidgetItem* item);
void mousePressEvent(QMouseEvent *event);
void s_Raise(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int iTableType, QString strFormInfoType);
//右键--添加分段线
void s_AddShiftLine(QString strUuid, double left_Low, double right_Hight);
//右键--清除当前分段线
void s_DelSelectShiftLine(QString strUuid);
//右键--清除全部分段线
void s_DelAllShiftLine(QString strUuid);
2025-10-29 17:23:30 +08:00
public slots:
void s_NewWell(QString strWellName, QString strSlfName);//新建井
void s_NewTrackChangeWidth(QString strWellName, int nW=0);//新建道后,改变井宽
void s_NewTrack_No_Line(QString strWellName, QString strTrackName);//新建空白道,没有曲线
2026-01-29 09:44:32 +08:00
void s_NewTrack_No_Line(QJsonObject topObj, QJsonObject infoObj);//新建空白道,没有曲线
2026-01-29 09:44:32 +08:00
void s_AddLine_Property(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName,
double newLeftScale, double newRightScale, QString strScaleType, QColor lineColor, double width, Qt::PenStyle lineStyle);//新建曲线,带属性
2026-01-04 16:54:55 +08:00
void s_NewTrack(); // 新建道
2025-12-30 17:38:11 +08:00
void s_NewDepth(); // 深度
void s_NewLogs(); // 曲线
void s_NewWave(); // 波列
void s_NewOGResult(); // 解释结论道
void s_NewGujing(); // 固井结论道
void s_NewSideCore(); // 井壁取心
void s_NewCore(); // 岩心分析
void s_NewMudlogging(); // 录井剖面
void s_NewTxt(); // 岩性描述
void s_NewCoreImage(); // 岩心照片
void s_NewSantuyibiao();// 斜井三图一表
2026-01-04 16:54:55 +08:00
void s_NewCrack(); // 裂缝
2025-12-30 17:38:11 +08:00
void s_NewShowDip(); // 蝌蚪图
2026-01-04 16:54:55 +08:00
void s_pinLvAc(); // 频率统计
void s_NewGanZhuangTu(); // 杆状图
2026-01-04 16:54:55 +08:00
void s_roseAc(); // 玫瑰图
2026-01-17 22:35:34 +08:00
void s_dcaAc(); // DCA分析
2026-01-04 16:54:55 +08:00
void s_Jykt(); // 井眼垮塌矢量图
void s_Denv(); // 井斜方位图
2026-01-06 16:03:55 +08:00
void s_DrawImage(); // 图像 成图
void s_NewGeoSection(); // 地质层位道
void s_NewJiegutext(); // 气测/FMT/射孔/文本
2026-01-06 16:03:55 +08:00
void s_NewLogface(); // 沉积相
void s_NewMCals(); // 多臂井径
void s_NewTubingstring(); // 套管组件
void s_NewTDT(); // TDT
//校深
void ApplyShiftDepth(QString strSlfName, QString strLineName, double DepthOffset);
void s_Shift(); // 整体深度平移校正
void MoveShift(QString strSlfName, QString strLineName, float sdep,float edep,float delta);
void s_MoveShift(); // 深度分段平移校正
void slotRun();
//设置/取消标准曲线
void s_Standard();
//设置/取消校正曲线
void s_Correction();
//自动对比
void s_autocor();
//执行校正
void s_runcor();
void s_Runcor_List(QString strUuid, QList<double> left_Low_List, QList<double> right_Hight_List);
//清除全部曲线设置
void s_ClearAllSetCurve();
//清除全部从曲线设置
void s_ClearSetCurve();
2025-12-25 15:10:14 +08:00
2025-10-29 17:23:30 +08:00
//
void s_showHeadTable(); //显示/隐藏图头
2026-01-23 14:53:34 +08:00
void s_currtemplite(); //加载图文件
void s_Save(); //保存图文件
void s_ExecuteDepthShift(); //校深
void s_ModuleOpen(); //处理算法
//void s_Open(QString fileFull);//打开
//图头右键菜单响应函数
void slotContextMenu(QPoint pos);
void slotMerge();//合并
void slotSplit();//拆分
2025-10-29 17:23:30 +08:00
};
#endif // MAINWINDOWCURVE_H