From 8968d17a688a6778942adea126761f2c5e350c2b Mon Sep 17 00:00:00 2001 From: jiayulong Date: Fri, 26 Jun 2026 10:16:42 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E2=80=9C=E5=A4=9A?= =?UTF-8?q?=E4=BA=95=E4=BF=9D=E5=AD=98=E5=9B=BE=E6=96=87=E4=BB=B6=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E5=8A=A0=E8=BD=BD=E5=9B=BE=E6=96=87=E4=BB=B6=E9=81=93?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=9C=89=E8=AF=AF=E2=80=9D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/formwell.cpp | 8 ++++++++ logPlus/formwell.h | 2 +- logPlus/mainwindowcurve.cpp | 36 ++++++++++++++++++++++++++++++++++++ logPlus/mainwindowcurve.h | 3 +++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index f15cbfb..707e6bc 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -596,6 +596,14 @@ void FormWell::s_NewTrack_No_Line(QString strUuid, QString strWellName, QString void FormWell::slot_NewTrack_No_Line(QString strUuid, QJsonObject topObj, QJsonObject infoObj) { + if(g_iLoadingJson==1)//针对模板加载 + { + if(!m_bActive) //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 + { + return; + } + } + QString strWellName=g_strWellName; QString strTrackName=""; //多井的打开工程,使用模板的井名和slf名 diff --git a/logPlus/formwell.h b/logPlus/formwell.h index 45eba18..04e3bf0 100644 --- a/logPlus/formwell.h +++ b/logPlus/formwell.h @@ -68,9 +68,9 @@ public: MainWindowCurve *m_pMainWinCurve = NULL; bool m_bShowTrackHead = true; //显示道头 bool m_bMultiProject = false; //多井的打开工程,使用模板的井名和slf名 + bool m_bActive = true; //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 bool m_bSetRowHeight = true; //默认非手工设置行高,而是调用接口SetRowHeight - // 道图形 QMap> m_mapFormDraw; diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index def27a8..4085733 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -5516,6 +5516,7 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName, bool bS widgetWell->m_bShowTrackHead = bShowTrackHead; //多井的打开工程,使用模板的井名和slf名 widgetWell->m_bMultiProject = m_bMultiProject; + widgetWell->m_bActive = true; //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 // ui->tableWidget_2->setCellWidget(i, columnCount, widgetWell);//默认用widgetWell填充满 m_mapFWell.insert(strWellName, widgetWell); @@ -7184,6 +7185,10 @@ void MainWindowCurve::DisplayWell_One(QJsonObject wellObjInfo) s_NewWell(strWellName, strSlfName, m_bShowTrackHead); + //修改井的激活状态 + //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 + modifyWellActive(); + // if (wellObjInfo.contains("formTracks")) { @@ -8035,3 +8040,34 @@ void MainWindowCurve::restoreOriginalCentralWidget() m_bHVDisplay = false; return; } + + +//修改井的激活状态 +//多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 +void MainWindowCurve::modifyWellActive() +{ + // + int columnCount = ui->tableWidget_2->columnCount();//总列数 + for(int i=0; itableWidget_2->cellWidget(1, i) != nullptr ) + { + auto myWidget = ui->tableWidget_2->cellWidget(1, i); + // + FormWell *widgetWell = qobject_cast(myWidget);//获得widget + if(widgetWell) + { + widgetWell->m_bActive = false; //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 + } + } + } +} diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index fe36a00..ab78dcb 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -159,6 +159,9 @@ public: QString m_fileJson=""; bool m_bMultiProject = false; //多井的打开工程,使用模板的井名和slf名 + //多井加载json时,默认当前井为最后一口井,激活状态。需要修改其他前面的井为非激活状态 + void modifyWellActive(); + public: //样式 void loadStyle(const QString &qssFile); From 7f42e0db2a3414b461e5ec96bdfd863f31394313 Mon Sep 17 00:00:00 2001 From: zhaolei <353719554@qq.com> Date: Fri, 26 Jun 2026 10:22:49 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A1=A8=E6=A0=BC=E5=BC=8F=E3=80=81=E6=8C=89=E6=B7=B1=E5=BA=A6?= =?UTF-8?q?=E8=A1=A8=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/CreateResoultStruct.ui | 587 +++++++++++++++++++++++++++++ logPlus/CreateResoultStructDlg.cpp | 524 +++++++++++++++++++++++++ logPlus/CreateResoultStructDlg.h | 45 +++ logPlus/LIST_TABLE_INF.h | 36 ++ logPlus/QtWindowWellSection.cpp | 541 +++++++++++++------------- logPlus/QtWindowWellSection.h | 28 +- logPlus/logPlus.pro | 3 + logPlus/mainwindowcurve.cpp | 43 ++- logPlus/qmytreewidget.cpp | 2 + 9 files changed, 1511 insertions(+), 298 deletions(-) create mode 100644 logPlus/CreateResoultStruct.ui create mode 100644 logPlus/CreateResoultStructDlg.cpp create mode 100644 logPlus/CreateResoultStructDlg.h create mode 100644 logPlus/LIST_TABLE_INF.h diff --git a/logPlus/CreateResoultStruct.ui b/logPlus/CreateResoultStruct.ui new file mode 100644 index 0000000..a61bb6c --- /dev/null +++ b/logPlus/CreateResoultStruct.ui @@ -0,0 +1,587 @@ + + + CreateResoultStruct + + + + 0 + 0 + 1330 + 752 + + + + Dialog + + + + + 30 + 290 + 191 + 41 + + + + 输入字段名称 + + + + + + 220 + 300 + 121 + 41 + + + + + + + 40 + 430 + 161 + 31 + + + + 选择取值方式 + + + + + + 220 + 430 + 231 + 41 + + + + + + + 20 + 340 + 621 + 81 + + + + 数据来源 + + + + + 250 + 40 + 111 + 21 + + + + 曲线 + + + + + + 30 + 40 + 191 + 21 + + + + 结论表字段 + + + + + + 400 + 40 + 181 + 21 + + + + 取心数据表 + + + + + + + 1060 + 120 + 241 + 34 + + + + 上移 + + + + + + 1060 + 160 + 241 + 34 + + + + 下移 + + + + + + 1060 + 200 + 241 + 34 + + + + 删除 + + + + + + 360 + 300 + 101 + 41 + + + + 中文名 + + + + + + 480 + 300 + 131 + 41 + + + + NULL + + + + + + 540 + 430 + 201 + 41 + + + + NULL + + + + + + 470 + 440 + 71 + 31 + + + + 单位 + + + + + + 380 + 700 + 181 + 31 + + + + 成果表模板名 + + + + + + 570 + 690 + 201 + 41 + + + + + + + 780 + 690 + 71 + 41 + + + + .lst + + + + + + 1060 + 73 + 241 + 41 + + + + 加载模板 + + + + + + 1160 + 660 + 112 + 34 + + + + 确认 + + + + + + 1160 + 700 + 112 + 34 + + + + 放弃 + + + + + + 20 + 60 + 1011 + 221 + + + + true + + + + + + 800 + 303 + 181 + 41 + + + + + + + 670 + 310 + 121 + 31 + + + + 数据类型 + + + + + + 1150 + 304 + 141 + 41 + + + + 4 + + + + + + 1010 + 310 + 131 + 31 + + + + 数据长度 + + + + + + 1060 + 240 + 241 + 34 + + + + 添加/更新记录 + + + + + + 870 + 690 + 221 + 41 + + + + 保存为模板 + + + + + + 10 + 10 + 161 + 41 + + + + 成果表名称 + + + + + + 190 + 10 + 241 + 41 + + + + + + + 1100 + 430 + 191 + 41 + + + + + + + 810 + 430 + 291 + 41 + + + + 重定向字段/计算公式 + + + + + + 1010 + 367 + 121 + 31 + + + + 小数位数 + + + + + + 1150 + 360 + 141 + 41 + + + + + + + 670 + 370 + 111 + 31 + + + + 转换表 + + + + + + 800 + 360 + 181 + 41 + + + + + + + 30 + 530 + 121 + 101 + + + + 特征值法 +取值规则 + + + + + + 160 + 490 + 361 + 171 + + + + + + + 630 + 490 + 451 + 171 + + + + + + + 540 + 550 + 91 + 27 + + + + 汇总项 + + + + + + 1100 + 520 + 201 + 91 + + + + 统计分析 +不合并同类项 + + + + + + 160 + 690 + 121 + 35 + + + + + + + 40 + 680 + 141 + 51 + + + + 数据列表 +间隔 + + + + + + 300 + 700 + 61 + 27 + + + + + + + + + + 1100 + 490 + 211 + 32 + + + + 基于结论取值 + + + + + + 1100 + 610 + 211 + 32 + + + + 全部结论列表 + + + + + + diff --git a/logPlus/CreateResoultStructDlg.cpp b/logPlus/CreateResoultStructDlg.cpp new file mode 100644 index 0000000..41eebc3 --- /dev/null +++ b/logPlus/CreateResoultStructDlg.cpp @@ -0,0 +1,524 @@ +#pragma warning( push , 0 ) +#include +#include +#include +#include "CreateResoultStructDlg.h" +#include +#pragma warning( pop ) + +CCreateResoultStructDlg::CCreateResoultStructDlg() + :m_pDialog( NULL ) +{ + QStringList MenuTypea; + MenuTypea<<("RESULT")<<("CoreLith")<<("CoreOil")<<("Corecolor")<<("Corecolor")<<("GujingOrder"); + DataTypea<<("INT")<<("SHORT")<<("LONG")<<("FLOAT")<<("DOUBLE")<<("STRING")<< + ("CHAR")<<("UNSIGNED CHAR")<<("UNSIGNED SHORT")<<("UNSIGNED INT")<<("UNSIGNED LONG")<<("转换型"); + GetValueModeStr=GetSimilarCurves("ValueMode"); + GetValueModeStr.insert(0,""); + ZDType=GetSimilarCurves("FieldType");//字段类型 + student_model=NULL; + m_pDialog = new Ui_CreateResoultStruct(); + m_pDialog->setupUi( this ); + for(int i=0;icomboBox->addItem(GetValueModeStr[i]); + for(int i=0;icomboBox_2->addItem(DataTypea[i]); + for(int i=0;icomboBox_3->addItem(MenuTypea[i]); + m_pListTableInf=NULL; + m_pDialog->radioButton_2->setChecked(true); + m_pDialog->btn_Ok->setIcon(QIcon( ::GetImagePath() + "icon/OK.png" )); +// m_pDialog->btn_Cancel->setIcon(QIcon( ::GetImagePath() + "icon/Cancel.png" )); + connect( m_pDialog->btn_Ok,SIGNAL(clicked()),this,SLOT(slotOnOkBtnClicked()) ); +// connect( m_pDialog->btn_Cancel,SIGNAL(clicked()),this,SLOT(slotOnCancelBtnClicked())); + + connect(m_pDialog->tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(slottableViewClicked(const QModelIndex &))); + + connect( m_pDialog->pushButton,SIGNAL(clicked()),this,SLOT(slotAddClicked())); + connect( m_pDialog->pushButton_5,SIGNAL(clicked()),this,SLOT(slotLoadTempClicked())); + connect( m_pDialog->pushButton_2,SIGNAL(clicked()),this,SLOT(slotMoveLeftClicked())); + connect( m_pDialog->pushButton_3,SIGNAL(clicked()),this,SLOT(slotMoveRightClicked())); + connect( m_pDialog->pushButton_4,SIGNAL(clicked()),this,SLOT(slotDeleteClicked())); + connect( m_pDialog->pushButton_6,SIGNAL(clicked()),this,SLOT(slotSaveTempClicked())); +} + +CCreateResoultStructDlg::~CCreateResoultStructDlg() +{ + +} +void CCreateResoultStructDlg::slottableViewClicked(const QModelIndex &ind) +{ + if(!m_pListTableInf) return; + QModelIndex im=ind;//m_pDialog->tableView->currentIndex(); + if(im.isValid()) { + int index=im.row(); + if(index<0) return; + if(index>=m_pListTableInf->Table_Field_Num) return; + m_pDialog->lineEdit->setText(m_pListTableInf->Table_Field[index].Name); + m_pDialog->lineEdit_2->setText(m_pListTableInf->Table_Field[index].HZName); +// QString FieldUnit=m_pDialog->lineEdit_3->setText(m_pListTableInf->Table_Field[index].); + m_pDialog->lineEdit_5->setText(QString(m_pListTableInf->Table_Field[index].Length)); + m_pDialog->comboBox_2->setCurrentIndex(m_pListTableInf->Table_Field[index].RepCode-1); + if(m_pListTableInf->Type[index]==0) { + m_pDialog->radioButton_2->setChecked(true); + m_pDialog->radioButton->setChecked(false); + m_pDialog->radioButton_3->setChecked(false); + } + else if(m_pListTableInf->Type[index]==1) { + m_pDialog->radioButton_2->setChecked(false); + m_pDialog->radioButton->setChecked(true); + m_pDialog->radioButton_3->setChecked(false); + } + else if(m_pListTableInf->Type[index]==2) { + m_pDialog->radioButton_2->setChecked(false); + m_pDialog->radioButton->setChecked(false); + m_pDialog->radioButton_3->setChecked(true); + } + //取值方式 + int FieldValType=m_pListTableInf->GetValueMode[index]; + m_pDialog->comboBox->setCurrentIndex(FieldValType); + } +} +void CCreateResoultStructDlg::Init(struct LIST_TABLE_INF* pListTableInf) +{ + m_pListTableInf=pListTableInf; +// m_pDialog->tableView->clear(); + student_model = new QStandardItemModel(); + student_model->setHorizontalHeaderItem(0, new QStandardItem("字段名")); + student_model->setHorizontalHeaderItem(1, new QStandardItem("中文名")); + student_model->setHorizontalHeaderItem(2, new QStandardItem("单位")); + student_model->setHorizontalHeaderItem(3, new QStandardItem("数据类型")); + student_model->setHorizontalHeaderItem(4, new QStandardItem("字节长度")); + student_model->setHorizontalHeaderItem(5, new QStandardItem("小数位数或类型名")); + student_model->setHorizontalHeaderItem(6, new QStandardItem("数据来源")); + student_model->setHorizontalHeaderItem(7, new QStandardItem("重定向名")); + student_model->setHorizontalHeaderItem(8, new QStandardItem("取值方式")); + m_pDialog->tableView->setModel(student_model); + SetTableView(); + m_pDialog->lineEdit_9->setText(QString::number(m_pListTableInf->lstm)); + m_pDialog->checkBox->setChecked(m_pListTableInf->m_Mode); + m_pDialog->checkBox_2->setChecked(m_pListTableInf->IsHB); + m_pDialog->checkBox_3->setChecked(!m_pListTableInf->m_Flag); + m_pDialog->lineEdit_6->setText(m_pListTableInf->m_TableName); + QString text; + for(int i=0;iSPVALNUM;i++) { + QString cs=m_pListTableInf->SPVAL[i]; + cs.remove("\r"); + cs.remove("\n"); + text+=cs; + text+="\n"; + } + m_pDialog->textEdit_2->setText(text); + m_pDialog->textEdit->setText(m_pListTableInf->m_CurveName); + QString path,fname; + GetWellNameAndPath(filename,fname,path); + m_pDialog->lineEdit_4->setText(fname); +} +void CCreateResoultStructDlg::slotOnOkBtnClicked() +{ + slotSaveTempClicked(); + this->accept(); +} + +void CCreateResoultStructDlg::slotOnCancelBtnClicked() +{ + this->reject(); +} + +void CCreateResoultStructDlg::slotMoveLeftClicked() +{ + QModelIndex im=m_pDialog->tableView->currentIndex(); + int index=im.row(); + if(index<1) return; + Slf_TABLE_FIELD Table_Field; + memmove(&Table_Field,&m_pListTableInf->Table_Field[index-1],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Table_Field[index-1],&m_pListTableInf->Table_Field[index],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Table_Field[index],&Table_Field,sizeof(Slf_TABLE_FIELD)); + + char Formate[116]; + memmove(&Formate,&m_pListTableInf->Format[index-1],116); + memmove(&m_pListTableInf->Format[index-1],&m_pListTableInf->Format[index],116); + memmove(&m_pListTableInf->Format[index],&Formate,116); + char ZdIndex[116]; + memmove(&ZdIndex,&m_pListTableInf->ZdIndex[index-1],116); + memmove(&m_pListTableInf->ZdIndex[index-1],&m_pListTableInf->ZdIndex[index],116); + memmove(&m_pListTableInf->ZdIndex[index],&ZdIndex,116); + BYTE type; + memmove(&type,&m_pListTableInf->Type[index-1],sizeof(BYTE)); + memmove(&m_pListTableInf->Type[index-1],&m_pListTableInf->Type[index],sizeof(BYTE)); + memmove(&m_pListTableInf->Type[index],&type,sizeof(BYTE)); + BYTE ValueMode=m_pListTableInf->GetValueMode[index-1]; + memmove(&m_pListTableInf->GetValueMode[index-1],&m_pListTableInf->GetValueMode[index],sizeof(BYTE)); + memmove(&m_pListTableInf->GetValueMode[index],&ValueMode,sizeof(BYTE)); + char RenName[116]; + memmove(&m_pListTableInf->RenName[index-1],&m_pListTableInf->RenName[index],116); + memmove(&m_pListTableInf->RenName[index],&RenName,116); + + SetTableViewRec(index-1); + SetTableViewRec(index); + if(index>0) + { + QModelIndex ind=m_pDialog->tableView->model()->index(index-1,0); + m_pDialog->tableView->setCurrentIndex(ind); + } +} +void CCreateResoultStructDlg::slotMoveRightClicked() +{ + QModelIndex im=m_pDialog->tableView->currentIndex(); + int index=im.row(); + if(index<0) return; + Slf_TABLE_FIELD Table_Field; + char Formate[116]; + char ZdIndex[116]; + BYTE type; + memmove(&Formate,&m_pListTableInf->Format[index+1],116); + memmove(&Table_Field,&m_pListTableInf->Table_Field[index+1],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Table_Field[index+1],&m_pListTableInf->Table_Field[index],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Table_Field[index],&Table_Field,sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Format[index+1],&m_pListTableInf->Format[index],116); + memmove(&m_pListTableInf->Format[index],&Formate,116); + memmove(&ZdIndex,&m_pListTableInf->ZdIndex[index+1],116); + memmove(&type,&m_pListTableInf->Type[index+1],sizeof(BYTE)); + memmove(&m_pListTableInf->ZdIndex[index+1],&m_pListTableInf->ZdIndex[index],116); + memmove(&m_pListTableInf->Type[index+1],&m_pListTableInf->Type[index],sizeof(BYTE)); + + memmove(&m_pListTableInf->ZdIndex[index],&ZdIndex,116); + memmove(&m_pListTableInf->Type[index],&type,sizeof(BYTE)); + BYTE ValueMode=m_pListTableInf->GetValueMode[index+1]; + memmove(&m_pListTableInf->GetValueMode[index+1],&m_pListTableInf->GetValueMode[index],sizeof(BYTE)); + memmove(&m_pListTableInf->GetValueMode[index],&ValueMode,sizeof(BYTE)); + char RenName[116]; + memmove(&m_pListTableInf->RenName[index+1],&m_pListTableInf->RenName[index],116); + memmove(&m_pListTableInf->RenName[index],&RenName,116); + SetTableViewRec(index+1); + SetTableViewRec(index); + if(indextableView->model()->rowCount()) + { + QModelIndex ind=m_pDialog->tableView->model()->index(index+1,0); + m_pDialog->tableView->setCurrentIndex(ind); + } +} +void CCreateResoultStructDlg::slotDeleteClicked() +{ + QModelIndex im=m_pDialog->tableView->currentIndex(); + int index=im.row(); + if(index<0) return; + for(int i=index;iTable_Field_Num;i++) { + memmove(&m_pListTableInf->Table_Field[i],&m_pListTableInf->Table_Field[i+1],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Format[i],&m_pListTableInf->Format[i+1],116); + memmove(&m_pListTableInf->ZdIndex[i],&m_pListTableInf->ZdIndex[i+1],116); + memmove(&m_pListTableInf->Type[i],&m_pListTableInf->Type[i+1],sizeof(BYTE)); + memmove(&m_pListTableInf->GetValueMode[i],&m_pListTableInf->GetValueMode[i+1],sizeof(BYTE)); + memmove(&m_pListTableInf->RenName[i],&m_pListTableInf->RenName[i+1],116); + } + student_model->removeRows(0,m_pListTableInf->Table_Field_Num); + m_pListTableInf->Table_Field_Num--; + if(m_pListTableInf->Table_Field_Num<0) m_pListTableInf->Table_Field_Num=0; + SetTableView(); +} +void CCreateResoultStructDlg::slotAddClicked() +{ +int RepSize[12]={0, + sizeof(int), + sizeof(short), + sizeof(long long), + sizeof(float), + sizeof(double), + sizeof(char), + sizeof(char), + sizeof(unsigned char), + sizeof(unsigned short), + sizeof(unsigned int), + sizeof(unsigned int) +}; + QString Field=m_pDialog->lineEdit->text(); + Field=Field.toUpper(); + if(Field.isEmpty()) { + AfxMessageBox("字段名不能为空!"); + return; + } + QModelIndex im=m_pDialog->tableView->currentIndex(); + int index=im.row(); + if(index<0) { + index=m_pListTableInf->Table_Field_Num; + for(int i=0;iTable_Field_Num;i++) { + if(Field.compare(m_pListTableInf->Table_Field[i].Name)==0) { + AfxMessageBox("字段名已存在!"); + return; + } + } + } + else { + if(QMessageBox::information(NULL,QObject::tr("当前位置插入或替换"),QObject::tr("插入?"),QMessageBox::Yes|QMessageBox::No)==QMessageBox::Yes) { + Slf_TABLE_FIELD Table_Field; + for(int i=m_pListTableInf->Table_Field_Num;i>index;i--) { + memmove(&m_pListTableInf->Table_Field[i],&m_pListTableInf->Table_Field[i-1],sizeof(Slf_TABLE_FIELD)); + memmove(&m_pListTableInf->Format[i],&m_pListTableInf->Format[i-1],116); + memmove(&m_pListTableInf->ZdIndex[i],&m_pListTableInf->ZdIndex[i-1],116); + memmove(&m_pListTableInf->Type[i],&m_pListTableInf->Type[i-1],sizeof(BYTE)); + memmove(&m_pListTableInf->GetValueMode[i],&m_pListTableInf->GetValueMode[i-1],sizeof(BYTE)); + memmove(&m_pListTableInf->RenName[i],&m_pListTableInf->RenName[i-1],116); + } + } + } + QString FieldHZ=m_pDialog->lineEdit_2->text(); + FieldHZ=FieldHZ.toUpper(); + QString FieldUnit=m_pDialog->lineEdit_3->text(); + QString FieldLength=m_pDialog->lineEdit_5->text(); + + if(m_pDialog->comboBox_2->currentText()!="STRING"&&m_pDialog->comboBox_2->currentText()!="转换型") + { + char buf[100]; + sprintf(buf,"%d",RepSize[m_pDialog->comboBox_2->currentIndex()+1]); + FieldLength=buf; + } + QString FieldType; + if(m_pDialog->radioButton_2->isChecked()) { + FieldType="字段"; + } + else if(m_pDialog->radioButton->isChecked()){ + FieldType="曲线"; + } + else { + FieldType="岩心"; + } + strcpy(m_pListTableInf->TableName[index],""); + m_pListTableInf->Type[index]=ZDType.indexOf(FieldType); + + if(m_pListTableInf->Type[index]==255) strcpy(m_pListTableInf->TableName[index],FieldType.toStdString().c_str()); +// if(m_pListTableInf->Type[index]<0) m_pListTableInf->Type[index]=1; + //取值方式 + QString FieldValType=m_pDialog->comboBox->currentText(); + m_pListTableInf->GetValueMode[index]=GetValueModeStr.indexOf(FieldValType); + if(m_pListTableInf->GetValueMode[index]<=0||m_pListTableInf->GetValueMode[index]>=GetValueModeStr.size())m_pListTableInf->GetValueMode[index]=3;//如果没有指定取值方式,则取平均值 + strcpy(m_pListTableInf->m_CurveName,"GR POR"); + strcpy(m_pListTableInf->RenName[index],Field.toStdString().c_str()); + strcpy(m_pListTableInf->Table_Field[index].Name,Field.toStdString().c_str()); + strcpy(m_pListTableInf->Table_Field[index].HZName,FieldHZ.toStdString().c_str()); + m_pListTableInf->Table_Field[index].Length=FieldLength.toFloat(); + m_pListTableInf->Table_Field[index].RepCode=m_pDialog->comboBox_2->currentIndex()+1; + if(GetValueModeStr[m_pDialog->comboBox_2->currentIndex()]=="MENU") + { + m_pListTableInf->Table_Field[index].RepCode=6; + strcpy(m_pListTableInf->ZdIndex[index],m_pDialog->comboBox_3->currentText().toStdString().c_str()); + if(strlen(m_pListTableInf->ZdIndex[index])==0) strcpy(m_pListTableInf->ZdIndex[index],"RESULT"); + } + else { + strcpy(m_pListTableInf->ZdIndex[index],m_pDialog->lineEdit_8->text().toStdString().c_str()); + if(strlen(m_pListTableInf->ZdIndex[index])==0) strcpy(m_pListTableInf->ZdIndex[index],"0"); + if(!isdigit(m_pListTableInf->ZdIndex[index][0])) { + strcpy(m_pListTableInf->TableName[index],m_pListTableInf->ZdIndex[index]); + strcpy(m_pListTableInf->ZdIndex[index],"0"); + } + } + m_pListTableInf->Table_Field[index].Reserved=0; + m_pListTableInf->Table_Field_Num++; + SetTableView(); +} +void CCreateResoultStructDlg::SetTableView() +{ + for(int i=0;iTable_Field_Num;i++) { + SetTableViewRec(i); + } +} +void CCreateResoultStructDlg::SetTableViewRec(int i) +{ + QString text=m_pListTableInf->Table_Field[i].Name; + student_model->setItem(i, 0, new QStandardItem(text)); + + QString hz; + hz=m_pListTableInf->Table_Field[i].HZName; + student_model->setItem(i, 1, new QStandardItem(hz)); + + QString Unit="NULL"; + student_model->setItem(i, 2, new QStandardItem(Unit)); + + QString Type; + if(m_pListTableInf->Table_Field[i].RepCode<1) m_pListTableInf->Table_Field[i].RepCode=1; + Type=DataTypea[m_pListTableInf->Table_Field[i].RepCode-1]; + student_model->setItem(i, 3, new QStandardItem(Type)); + +// QString Length; + char buf[100]; + sprintf(buf,"%d",m_pListTableInf->Table_Field[i].Length); + student_model->setItem(i, 4, new QStandardItem(buf)); + + student_model->setItem(i, 5, new QStandardItem(m_pListTableInf->ZdIndex[i])); + + QString valfrom; + valfrom=ZDType[m_pListTableInf->Type[i]]; + student_model->setItem(i, 6, new QStandardItem(valfrom)); + + QString RName; + RName=m_pListTableInf->RenName[i]; + student_model->setItem(i, 7, new QStandardItem(RName)); + QString ValueMode=GetValueModeStr[m_pListTableInf->GetValueMode[i]]; + if(valfrom=="字段"&&ValueMode=="平均值") ValueMode="NULL"; + student_model->setItem(i, 8, new QStandardItem(ValueMode)); +} +void CCreateResoultStructDlg::slotLoadTempClicked() +{ + QString path=GetTemplatePath(); + QString m_ModelName=path; + int pos=m_ModelName.lastIndexOf('\\'); + if(pos<0) pos=m_ModelName.length(); + m_ModelName=m_ModelName.left(pos); +// m_ModelName+=+"\\"+m_ParFileName; + QString strTplFilter="(*.lst)"; + + QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); + FILE *fp=fopen(defaultTempleteFile.toStdString().c_str(),"rt"); + if(fp) + { + char buf[1000]; + QString cs; + student_model->removeRows(0,m_pListTableInf->Table_Field_Num); + fscanf(fp,"%s",m_pListTableInf->m_TableName); + fscanf(fp,"%d %d %d ",&m_pListTableInf->Table_Field_Num, + &m_pListTableInf->m_Mode, + &m_pListTableInf->m_Flag + ); + buf[0]=0; + fgets(buf,1000,fp); + cs=buf; + cs.remove("\r\n"); + cs.remove("\r"); + cs.remove("\n"); + strcpy(m_pListTableInf->m_CurveName,cs.toStdString().c_str()); + char ss[10][32]; + strcpy(ss[1],""); + strcpy(ss[2],""); + for(int i=0;iTable_Field_Num;i++) + { + strcpy(m_pListTableInf->TableName[i],""); + fscanf(fp,"%s %s %s %s %s %s %s %s %s %s",ss[0],m_pListTableInf->Table_Field[i].Name,m_pListTableInf->Table_Field[i].HZName,ss[3],ss[4],ss[5],ss[6],ss[7],ss[8],ss[9]); + //数值类型 + m_pListTableInf->Table_Field[i].RepCode=DataTypea.indexOf(ss[4])+1; + //字段长度 + sscanf(ss[5],"%d",&m_pListTableInf->Table_Field[i].Length); + m_pListTableInf->Table_Field[i].Reserved=0; + strcpy(m_pListTableInf->ZdIndex[i],ss[6]); + if(!isdigit(ss[6][0])&&stricmp(ss[9],"MENU")) + { + strcpy(m_pListTableInf->TableName[i],ss[6]); + strcpy(m_pListTableInf->ZdIndex[i],"0"); + } + //字段类型 + m_pListTableInf->Type[i]=ZDType.indexOf(ss[7]); + if(m_pListTableInf->Type[i]==255) strcpy(m_pListTableInf->TableName[i],ss[7]); +// if(m_pListTableInf->Type[i]<0) m_pListTableInf->Type[i]=1; + //重定向名 + strcpy(m_pListTableInf->RenName[i],ss[8]); + //取值方式 + m_pListTableInf->GetValueMode[i]=GetValueModeStr.indexOf(ss[9]); + if(m_pListTableInf->GetValueMode[i]<=0||m_pListTableInf->GetValueMode[i]>=GetValueModeStr.size())m_pListTableInf->GetValueMode[i]=3;//如果没有指定取值方式,则取平均值 + } + fscanf(fp," %d %d %d\n",&m_pListTableInf->lstm,&m_pListTableInf->IsHB,m_pListTableInf->IsFC); + fscanf(fp," %s\n",&m_pListTableInf->m_TableType); + fscanf(fp," %s\n",&m_pListTableInf->m_TableSpFIELD); + if(!m_pListTableInf->m_TableType[0]) strcpy(m_pListTableInf->m_TableType,"TOTALVAL"); + if(!m_pListTableInf->m_TableSpFIELD[0]) strcpy(m_pListTableInf->m_TableSpFIELD,"RESULTNO"); + m_pListTableInf->SPVALNUM=0; + while(!feof(fp)) + { + buf[0]=0; + fgets(buf,1000,fp); + cs=buf; + cs.remove("\r"); + cs.remove("\n"); + cs.trimmed(); + if(!cs.isEmpty()&&m_pListTableInf->SPVALNUM<100) + { + strcpy(m_pListTableInf->SPVAL[m_pListTableInf->SPVALNUM],cs.toStdString().c_str()); + m_pListTableInf->SPVALNUM++; + } + } + fclose(fp); + } + else + { + strcpy(m_pListTableInf->m_CurveName,"GR"); + m_pListTableInf->m_Mode=0;//取值模式选择:0-每条曲线按各自给定取值方式取值,1-按给定曲线的极值点深度取值 + m_pListTableInf->m_Flag=1; + m_pListTableInf->IsHB=1; + } + SetTableView(); +} +void CCreateResoultStructDlg::slotSaveTempClicked() +{ + m_pListTableInf->lstm=m_pDialog->lineEdit_9->text().toInt(); + m_pListTableInf->IsHB=m_pDialog->checkBox_2->checkState(); + m_pListTableInf->m_Mode=m_pDialog->checkBox->checkState(); + m_pListTableInf->m_Flag=!m_pDialog->checkBox_3->checkState(); + m_pListTableInf->IsFC=0; + QString ttabname=m_pDialog->lineEdit_6->text(); + if(ttabname.isEmpty()) { + AfxMessageBox("输出成果表名不能为空!"); + return; + } + QString tt=m_pDialog->lineEdit_4->text(); + if(tt.isEmpty()) { + AfxMessageBox("输出模板文件名不能为空!"); + return; + } + QString path=GetTemplatePath(); + tt=tt.toLower(); + if(tt.indexOf(".lst")<0) tt+=+".lst"; + QString defaultTempleteFile=path+tt; + FILE *fp=fopen(defaultTempleteFile.toStdString().c_str(),"wt"); + if(fp) + { + fprintf(fp,"%s\n",ttabname.toStdString().c_str()); + fprintf(fp,"%d %d %d ",m_pListTableInf->Table_Field_Num, + m_pListTableInf->m_Mode, + m_pListTableInf->m_Flag); + QString cs=m_pDialog->textEdit->toPlainText(); + cs.replace("\r\n"," "); + cs.replace("\r"," "); + cs.replace("\n"," "); + fprintf(fp,"%s\n",cs.toStdString().c_str()); + + for(int i=0;iTable_Field_Num;i++) { + QString text=m_pListTableInf->Table_Field[i].Name; + fprintf(fp,"%d %s",i,text.toStdString().c_str()); + QString hz; + hz=m_pListTableInf->Table_Field[i].HZName; + fprintf(fp," %s",hz.toStdString().c_str()); + + QString Unit="NULL"; + fprintf(fp," %s",Unit.toStdString().c_str()); + + QString Type; + if(m_pListTableInf->Table_Field[i].RepCode<1) m_pListTableInf->Table_Field[i].RepCode=1; + Type=DataTypea[m_pListTableInf->Table_Field[i].RepCode-1]; + fprintf(fp," %s",Type.toStdString().c_str()); + + // QString Length; + char buf[100]; + sprintf(buf,"%d",m_pListTableInf->Table_Field[i].Length); + fprintf(fp," %s",buf); + + fprintf(fp," %s",m_pListTableInf->ZdIndex[i]); + + QString valfrom; + valfrom=ZDType[m_pListTableInf->Type[i]]; + fprintf(fp," %s",valfrom.toStdString().c_str()); + + QString RName; + RName=m_pListTableInf->RenName[i]; + fprintf(fp," %s",RName.toStdString().c_str()); + QString ValueMode=GetValueModeStr[m_pListTableInf->GetValueMode[i]]; + + if(valfrom=="字段"&&ValueMode=="平均值") ValueMode="NULL"; + fprintf(fp," %s\n",ValueMode.toStdString().c_str()); + } + fprintf(fp," %d %d %d\n",m_pListTableInf->lstm,m_pListTableInf->IsHB,m_pListTableInf->IsFC); + fprintf(fp,"%s\n",m_pListTableInf->m_TableType); + fprintf(fp,"%s\n",m_pListTableInf->m_TableSpFIELD); + cs=m_pDialog->textEdit_2->toPlainText(); +/* cs.replace("\r\n"," "); + cs.replace("\r"," "); + cs.replace("\n"," "); +*/ + fprintf(fp,"%s\n",cs.toStdString().c_str()); + fclose(fp); + } + AfxMessageBox("保存完成!"); +} diff --git a/logPlus/CreateResoultStructDlg.h b/logPlus/CreateResoultStructDlg.h new file mode 100644 index 0000000..1fd0613 --- /dev/null +++ b/logPlus/CreateResoultStructDlg.h @@ -0,0 +1,45 @@ +/** +* @file CreateResoultStructDlg.h +* @brief 创建图头表格属性配置对话框 +* @date 2015-03 +* @author: lxl +*/ +#pragma warning( push , 0 ) +#include "ui_CreateResoultStruct.h" +#include "ObjWell.h" +#include +#include "LIST_TABLE_INF.h" + +#pragma warning( pop ) + + +class CCreateResoultStructDlg : public QDialog +{ + Q_OBJECT +public: + CCreateResoultStructDlg(); + ~CCreateResoultStructDlg(); +public: + void Init(struct LIST_TABLE_INF* pListTableInf); + QString filename; +private slots: + void slotMoveLeftClicked(); + void slotMoveRightClicked(); + void slotDeleteClicked(); + void slotAddClicked(); + void slotLoadTempClicked(); + void slotSaveTempClicked(); + void slotOnOkBtnClicked(); + void slotOnCancelBtnClicked(); + void slottableViewClicked(const QModelIndex &ind); +private: + Ui_CreateResoultStruct* m_pDialog; + struct LIST_TABLE_INF* m_pListTableInf; + QStringList DataTypea; + QStringList GetValueModeStr; + QStringList ZDType; + QStandardItemModel *student_model; + void SetTableView(); + void SetTableViewRec(int i); + +}; diff --git a/logPlus/LIST_TABLE_INF.h b/logPlus/LIST_TABLE_INF.h new file mode 100644 index 0000000..687e6f8 --- /dev/null +++ b/logPlus/LIST_TABLE_INF.h @@ -0,0 +1,36 @@ +/** +* @file LIST_TABLE_INF.h +* @brief Qt单井图 图头 +* @date 2015-03 +* @author: lxl +*/ +#include "slf.h" + +#ifndef LIST_TABLE_INF_H +#define LIST_TABLE_INF_H + +#pragma warning( push ,0) +#pragma warning( pop ) +struct LIST_TABLE_INF +{ + int lstm;//是否每米取值,0=不,>0,指定间隔 + char m_TableName[16]; + char m_TableType[16];//输出的统计表类型 + char m_TableSpFIELD[16];//特征字段 + int SPVALNUM; + char SPVAL[100][116]; + int IsHB; + int Table_Field_Num; + int m_Mode;//取值模式选择:0-每条曲线按各自给定取值方式取值,1-按给定曲线的极值点深度取值 + int m_Flag;// + int IsFC;//层内层列表 + char m_CurveName[501];//特征曲线名 + Slf_TABLE_FIELD Table_Field[100]; + char RenName[100][116]; + BYTE Type[100]; + BYTE GetValueMode[100]; + char ZdIndex[100][116]; + char Format[100][116]; + char TableName[100][116]; +}; +#endif \ No newline at end of file diff --git a/logPlus/QtWindowWellSection.cpp b/logPlus/QtWindowWellSection.cpp index ceb32ca..2cf0a69 100644 --- a/logPlus/QtWindowWellSection.cpp +++ b/logPlus/QtWindowWellSection.cpp @@ -19,7 +19,7 @@ #include "DataImport.h" #include "DataManagger.h" #include "DepthProgress.h" -// #include "CreateResoultStructDlg.h" +#include "CreateResoultStructDlg.h" // #include "WellSectionCoordinate.h" // #include "QtWellSceneManager.h" // #include "QtWellSectionViewer.h" @@ -224,18 +224,18 @@ CQtWindowWellSection::~CQtWindowWellSection() // } void CQtWindowWellSection::slotSetListTableStruct() { - // CCreateResoultStructDlg *pCreateResoultStructDlg=new CCreateResoultStructDlg(); - // QString path=GetTemplatePath(); - // QString strTplFilter="(*.lst)"; - // QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); - // if(defaultTempleteFile.isEmpty()) { - // return; - // } - // pCreateResoultStructDlg->filename=defaultTempleteFile; - // OnListTableInf(defaultTempleteFile); - // pCreateResoultStructDlg->Init(&m_ListTableInf); - // pCreateResoultStructDlg->exec(); - // delete pCreateResoultStructDlg; + CCreateResoultStructDlg *pCreateResoultStructDlg=new CCreateResoultStructDlg(); + QString path=GetTemplatePath(); + QString strTplFilter="(*.lst)"; + QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); + if(defaultTempleteFile.isEmpty()) { + return; + } + pCreateResoultStructDlg->filename=defaultTempleteFile; + OnListTableInf(defaultTempleteFile); + pCreateResoultStructDlg->Init(&m_ListTableInf); + pCreateResoultStructDlg->exec(); + delete pCreateResoultStructDlg; } void CQtWindowWellSection::OnListTableInf(QString m_ParFileName) { @@ -1597,112 +1597,112 @@ void CQtWindowWellSection::CreateTattle(QString m_csWellName,QString m_OGTableNa mrw.Close(); //关闭井文件 } } -// void CQtWindowWellSection::setTablePointValue(float dep) -// { -// CQtWindowWellSection *pWin=this; -// if(!pWin) return; -// { -// CQtWellSceneManager* scene = dynamic_cast(GetSceneManager()); +void CQtWindowWellSection::setTablePointValue(CObjWellLog *pLog, float dep) +{ + CQtWindowWellSection *pWin=this; + if(!pWin) return; + { + // CQtWellSceneManager* scene = dynamic_cast(GetSceneManager()); -// CBaseObject *pCurrentObject = CObjProject::GetObjectByID(scene->GetCurrentPickObjectID()); -// CObjWellLog *pLog = dynamic_cast(pCurrentObject); -// CObjDiscreteWellLog *pLog1 = dynamic_cast(pCurrentObject); -// if((!pLog&&!pLog1)||(!pLog1&&pLog&&pLog->m_ObjectType!=TABLE_OBJECT&&pLog->m_ObjectType!=TABLEE_OBJECT)) { -// AfxMessageBox("先选择数据表对象!"); -// return; -// } -// if(!pWin->m_ListTableInf.m_TableName[0]) -// { -// QString path=GetTemplatePath(); -// QString strTplFilter="(*.lst)"; -// QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); -// if(defaultTempleteFile.isEmpty()) { -// return; -// } -// pWin->OnListTableInf(defaultTempleteFile); -// } -// if(pWin->m_ListTableInf.Table_Field_Num<=0) -// { -// AfxMessageBox("对不起,您没有定义取值表结构,无法进行取值\r\n\r\n请选择“分层曲线取值方式设置”菜单,设置取值表结构"); -// return; -// } -// INC.Noi=0; -// INC.Name[0]=0; -// HD.Rlev=0.125; -// HD.Dep=-99999.0; -// HD.Depo=0; -// HD.Sdep=0; -// HD.Edep=-99999; -// HD.Stdep=99999; -// HD.StartDep=HD.Stdep; -// HD.EndDep=HD.Edep; -// CMemRdWt mrw; -// LIST_TABLE_INF &m_ListTableInf=pWin->m_ListTableInf; -// QString m_csWellName=pLog->GetSlfFileName(); -// if ( mrw.Open(m_csWellName.toStdString().c_str()) ) // 打开井文件 -// { -// QString OutTab=m_ListTableInf.m_TableName; -// int iIndex=mrw.OpenTable(OutTab.toStdString().c_str()); -// if (iIndex<0) -// { -// AfxMessageBox(OutTab+"数据表不存在,请先生成表!"); -// mrw.Close(); -// return; -// } -// int iIndex1=mrw.OpenTable(pLog->GetName().toStdString().c_str()); -// if(iIndex1<0) { -// mrw.Clear(); -// AfxMessageBox(pLog->GetName()+"不存在!,无法生成对应数据表!"); -// return; -// } -// LAYER_DATA *m_Result=NULL; -// int m_RecNum=0; -// int tabletype=0; -// int tabletype2=0; -// m_RecNum=mrw.GetTableRecordCount(iIndex1); -// int relen=mrw.GetTableRecordLength(iIndex1); -// if(relenGetCurrentPickObjectID()); + // CObjWellLog *pLog = dynamic_cast(pCurrentObject); + // CObjDiscreteWellLog *pLog1 = dynamic_cast(pCurrentObject); + // if((!pLog&&!pLog1)||(!pLog1&&pLog&&pLog->m_ObjectType!=TABLE_OBJECT&&pLog->m_ObjectType!=TABLEE_OBJECT)) { + // AfxMessageBox("先选择数据表对象!"); + // return; + // } + if(!pWin->m_ListTableInf.m_TableName[0]) + { + QString path=GetTemplatePath(); + QString strTplFilter="(*.lst)"; + QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); + if(defaultTempleteFile.isEmpty()) { + return; + } + pWin->OnListTableInf(defaultTempleteFile); + } + if(pWin->m_ListTableInf.Table_Field_Num<=0) + { + AfxMessageBox("对不起,您没有定义取值表结构,无法进行取值\r\n\r\n请选择“分层曲线取值方式设置”菜单,设置取值表结构"); + return; + } + INC.Noi=0; + INC.Name[0]=0; + HD.Rlev=0.125; + HD.Dep=-99999.0; + HD.Depo=0; + HD.Sdep=0; + HD.Edep=-99999; + HD.Stdep=99999; + HD.StartDep=HD.Stdep; + HD.EndDep=HD.Edep; + CMemRdWt mrw; + LIST_TABLE_INF &m_ListTableInf=pWin->m_ListTableInf; + QString m_csWellName=pLog->GetSlfFileName(); + if ( mrw.Open(m_csWellName.toStdString().c_str()) ) // 打开井文件 + { + QString OutTab=m_ListTableInf.m_TableName; + int iIndex=mrw.OpenTable(OutTab.toStdString().c_str()); + if (iIndex<0) + { + AfxMessageBox(OutTab+"数据表不存在,请先生成表!"); + mrw.Close(); + return; + } + int iIndex1=mrw.OpenTable(pLog->GetName().toStdString().c_str()); + if(iIndex1<0) { + mrw.Clear(); + AfxMessageBox(pLog->GetName()+"不存在!,无法生成对应数据表!"); + return; + } + LAYER_DATA *m_Result=NULL; + int m_RecNum=0; + int tabletype=0; + int tabletype2=0; + m_RecNum=mrw.GetTableRecordCount(iIndex1); + int relen=mrw.GetTableRecordLength(iIndex1); + if(relen=m_Result[i].StartDepth&&dep<=m_Result[i].EndDepth) -// { -// for (int j=0;j=m_Result[i].StartDepth&&dep<=m_Result[i].EndDepth) + { + for (int j=0;j( GetSceneManager() ); // if(!pWellSceneManager) return; @@ -1723,164 +1723,167 @@ void CQtWindowWellSection::slotReFreshZoneListData() // } // m_LOGS.clear(); // m_LOGS.append(pLog); -// QDialog dialog(NULL); -// dialog.setModal(false); -// Qt::WindowFlags flags = dialog.windowFlags(); -// flags |= Qt::WindowStaysOnTopHint; -// flags &= ~Qt::WindowContextHelpButtonHint; -// dialog.setWindowFlags(flags); -// QString path,wellname; -// GetWellNameAndPath(pRound->GetSlfFileName(),wellname,path); -// dialog.setWindowTitle("深度点-"+wellname); -// QGridLayout *verticalLayoutWidget = new QGridLayout(&dialog); -// verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget")); -// verticalLayoutWidget->setGeometry(QRect(30, 30, 631, 281)); -// QVBoxLayout*form = new QVBoxLayout(); -// form->setObjectName(QString::fromUtf8("form")); -// form->setContentsMargins(0, 0, 0, 0); + QDialog dialog(NULL); + dialog.setModal(false); + Qt::WindowFlags flags = dialog.windowFlags(); + flags |= Qt::WindowStaysOnTopHint; + flags &= ~Qt::WindowContextHelpButtonHint; + dialog.setWindowFlags(flags); + QString path,wellname; + GetWellNameAndPath(/*pRound*/pLog->GetSlfFileName(),wellname,path); + dialog.setWindowTitle("深度点-"+wellname); + QGridLayout *verticalLayoutWidget = new QGridLayout(&dialog); + verticalLayoutWidget->setObjectName(QString::fromUtf8("verticalLayoutWidget")); + verticalLayoutWidget->setGeometry(QRect(30, 30, 631, 281)); + QVBoxLayout*form = new QVBoxLayout(); + form->setObjectName(QString::fromUtf8("form")); + form->setContentsMargins(0, 0, 0, 0); -// CompleterTextEdit*pTDialog = new CompleterTextEdit(&dialog); -// pTDialog->setObjectName(QString::fromUtf8("pTDialog")); -// form->addWidget(pTDialog); -// pTDialog->setFont(QFont("宋体",24)); -// QHBoxLayout*horizontalLayout = new QHBoxLayout(); -// horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); -// { -// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str()); -// if(!m_ListTableInf.m_TableName[0]) -// { -// QString path=GetTemplatePath(); -// QString strTplFilter="(*.lst)"; -// QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); -// if(defaultTempleteFile.isEmpty()) { -// return; -// } -// OnListTableInf(defaultTempleteFile); -// } -// DWORD bytes_write; -// char cardname[200]="valdepth_inp"; -// int index_result = mem.OpenStream(cardname); -// if(index_result<0) -// { -// QString OutTab=m_ListTableInf.m_TableName; -// int iIndex=mem.OpenTable(OutTab.toStdString().c_str()); -// if (iIndex<0) -// { -// AfxMessageBox(OutTab+"数据表不存在,请先生成表!"); -// mem.Close(); -// return; -// } -// int m_RecNum=0; -// int tabletype=0; -// int tabletype2=0; -// m_RecNum=mem.GetTableRecordCount(iIndex); -// QStringList STRS; -// STRS.append("NO DEPTH"); -// char buf[200]; -// QString css; -// for(int i=0;idocument()->setPlainText(STRS.join("\n")); -// } -// else if(index_result>-1) -// { -// int len=mem.GetStreamLength(index_result); -// if(len>0) { -// char *buff=new char[len+1]; -// DWORD lb=0; -// mem.ReadStream(index_result,len,&lb,buff); -// pTDialog->document()->setPlainText(buff); -// delete buff; -// } -// } -// mem.Close(); -// } -// QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, -// Qt::Horizontal, &dialog); -// form->addLayout(horizontalLayout); -// form->addWidget(&buttonBox); -// verticalLayoutWidget->addLayout(form, 0, 0, 1, 1); -// connect(pTDialog,SIGNAL(cursorPositionChanged()), -// this,SLOT(onCurrentLineHighLight())); + CompleterTextEdit*pTDialog = new CompleterTextEdit(&dialog); + pTDialog->setObjectName(QString::fromUtf8("pTDialog")); + form->addWidget(pTDialog); + pTDialog->setFont(QFont("宋体",24)); + QHBoxLayout*horizontalLayout = new QHBoxLayout(); + horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout")); + { + CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str()); + if(!m_ListTableInf.m_TableName[0]) + { + QString path=GetTemplatePath(); + QString strTplFilter="(*.lst)"; + QString defaultTempleteFile=QFileDialog::getOpenFileName(NULL,QObject::tr("选择模板"),path,strTplFilter); + if(defaultTempleteFile.isEmpty()) { + return; + } + OnListTableInf(defaultTempleteFile); + } + DWORD bytes_write; + char cardname[200]="valdepth_inp"; + int index_result = mem.OpenStream(cardname); + if(index_result<0) + { + QString OutTab=m_ListTableInf.m_TableName; + int iIndex=mem.OpenTable(OutTab.toStdString().c_str()); + if (iIndex<0) + { + AfxMessageBox(OutTab+"数据表不存在,请先生成表!"); + mem.Close(); + return; + } + int m_RecNum=0; + int tabletype=0; + int tabletype2=0; + m_RecNum=mem.GetTableRecordCount(iIndex); + QStringList STRS; + STRS.append("NO DEPTH"); + char buf[200]; + char szbuf[64] = "DEPTH"; + QString css; + for(int i=0;idocument()->setPlainText(STRS.join("\n")); + } + else if(index_result>-1) + { + int len=mem.GetStreamLength(index_result); + if(len>0) { + char *buff=new char[len+1]; + DWORD lb=0; + mem.ReadStream(index_result,len,&lb,buff); + pTDialog->document()->setPlainText(buff); + delete buff; + } + } + mem.Close(); + } + QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, + Qt::Horizontal, &dialog); + form->addLayout(horizontalLayout); + form->addWidget(&buttonBox); + verticalLayoutWidget->addLayout(form, 0, 0, 1, 1); + connect(pTDialog,SIGNAL(cursorPositionChanged()), + this,SLOT(onCurrentLineHighLight())); -// QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept())); -// QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject())); -// dialog.show(); -// if (dialog.exec() == QDialog::Accepted) { -// QString text=pTDialog->document()->toPlainText(); -// DWORD bytes_write; -// char cardname[200]="valdepth_inp"; -// CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str()); -// int index_result = mem.CreateStream(PARA_OBJECT,cardname,16384,FALSE); + QObject::connect(&buttonBox, SIGNAL(accepted()), &dialog, SLOT(accept())); + QObject::connect(&buttonBox, SIGNAL(rejected()), &dialog, SLOT(reject())); + dialog.show(); + if (dialog.exec() == QDialog::Accepted) { + QString text=pTDialog->document()->toPlainText(); + DWORD bytes_write; + char cardname[200]="valdepth_inp"; + CMemRdWt mem(pLog->GetSlfFileName().toStdString().c_str()); + int index_result = mem.CreateStream(PARA_OBJECT,cardname,16384,FALSE); -// if(index_result>-1) { -// int len=strlen(text.toStdString().c_str()); -// if(len>0) { -// DWORD lb=0; -// mem.WriteStream(index_result,len+1,&lb,text.toStdString().c_str()); -// } -// } -// mem.Close(); -// QString name=cardname; -// CObjWelllogRound *pWelllogRound=dynamic_cast(pRound); -// if(pWelllogRound) { -// PaiObject*pBase=pWelllogRound->GetObjectByName(name,GetClassID_WellLogINP()); -// if(!dynamic_cast(pBase)){ -// CObjWellLog * acurve=new CObjWellLogINP(); -// if(acurve) { -// acurve->m_ObjectType=CARD_OBJECT; -// acurve->SetName(name); -// acurve->SetAliasName(name); -// acurve->SetSlfFileName(pLog->GetSlfFileName()); -// acurve->SetWell(pWelllogRound->GetWell()); -// pWelllogRound->AddChild(acurve); -// } -// } -// } + if(index_result>-1) { + int len=strlen(text.toStdString().c_str()); + if(len>0) { + DWORD lb=0; + mem.WriteStream(index_result,len+1,&lb,text.toStdString().c_str()); + } + } + mem.Close(); + QString name=cardname; + // CObjWelllogRound *pWelllogRound=dynamic_cast(pRound); + // if(pWelllogRound) { + // PaiObject*pBase=pWelllogRound->GetObjectByName(name,GetClassID_WellLogINP()); + // if(!dynamic_cast(pBase)){ + // CObjWellLog * acurve=new CObjWellLogINP(); + // if(acurve) { + // acurve->m_ObjectType=CARD_OBJECT; + // acurve->SetName(name); + // acurve->SetAliasName(name); + // acurve->SetSlfFileName(pLog->GetSlfFileName()); + // acurve->SetWell(pWelllogRound->GetWell()); + // pWelllogRound->AddChild(acurve); + // } + // } + // } -// QString SDEPS=pTDialog->toPlainText(); -// SDEPS.replace("\r\n","\n"); -// QStringList sdeps=SDEPS.split("\n"); -// sdeps.removeAll(""); -// for(int i=0;iGetFootSheetCount(); -// for(int index=0;indexGetFootSheet( index ); -// if(pSheet) { -// pSheet->SetLoadDataFromSLFEnabled(true); -// pSheet->LoadDataFromSLF(); -// } -// } -// if (m_pSceneManager) -// { -// m_pSceneManager->UpdateAll(); -// m_pSceneManager->GetCameraCommand().OnHScroll(); + QString SDEPS=pTDialog->toPlainText(); + SDEPS.replace("\r\n","\n"); + QStringList sdeps=SDEPS.split("\n"); + sdeps.removeAll(""); + for(int i=0;isig_Notice_AddObject("WindowWellSection",pLog->GetSlfFileName(),Names); +// pTDialog=NULL; +// int c=pDoc->GetFootSheetCount(); +// for(int index=0;indexGetFootSheet( index ); +// if(pSheet) { +// pSheet->SetLoadDataFromSLFEnabled(true); +// pSheet->LoadDataFromSLF(); +// } +// } +// if (m_pSceneManager) +// { +// m_pSceneManager->UpdateAll(); +// m_pSceneManager->GetCameraCommand().OnHScroll(); // // hideEditGraphicsHeadCell(); -// } -// } -// else { -// pTDialog=NULL; -// return; -// } +// } + } + else { + pTDialog=NULL; + return; + } } void CQtWindowWellSection::slotZoneListData(CObjWellLog *pLog) { diff --git a/logPlus/QtWindowWellSection.h b/logPlus/QtWindowWellSection.h index 502b6f9..54bc917 100644 --- a/logPlus/QtWindowWellSection.h +++ b/logPlus/QtWindowWellSection.h @@ -13,7 +13,7 @@ #include "BaseObject.h" #include "ObjWelllog.h" // #include "VecWindow.h" -// #include "List_Table_Inf.h" +#include "List_Table_Inf.h" // #include "WellSectionExport.h" // #include "ObjWellTrack.h" // #include "WellSectionWindowDocument.h" @@ -24,28 +24,6 @@ #pragma execution_character_set("utf-8") #pragma warning( push ,0) #pragma warning( pop ) -struct LIST_TABLE_INF -{ - int lstm;//是否每米取值,0=不,>0,指定间隔 - char m_TableName[16]; - char m_TableType[16];//输出的统计表类型 - char m_TableSpFIELD[16];//特征字段 - int SPVALNUM; - char SPVAL[100][116]; - int IsHB; - int Table_Field_Num; - int m_Mode;//取值模式选择:0-每条曲线按各自给定取值方式取值,1-按给定曲线的极值点深度取值 - int m_Flag;// - int IsFC;//层内层列表 - char m_CurveName[501];//特征曲线名 - Slf_TABLE_FIELD Table_Field[100]; - char RenName[100][116]; - BYTE Type[100]; - BYTE GetValueMode[100]; - char ZdIndex[100][116]; - char Format[100][116]; - char TableName[100][116]; -}; struct jiegutable_struct { @@ -97,7 +75,7 @@ public slots: // void slotSetShiftCurve(int type); // void slotSetOtherShiftCurve(int type); // void slotSetStandardCurve(int type); - void slotReFreshZoneListData(); + void slotReFreshZoneListData(CObjWellLog *pLog); // void slotSetShiftCurve(); // void slotSetOtherShiftCurve(); // void slotSetStandardCurve(); @@ -116,7 +94,7 @@ public slots: // void slotClearStandardMeg(); // void slotClearMegCurves(); - // void setTablePointValue(float dep); + void setTablePointValue(CObjWellLog *pLog, float dep); // void slotClearStandardShift(int type); // void slotClearShiftCurves(int type); diff --git a/logPlus/logPlus.pro b/logPlus/logPlus.pro index ff8cb61..9b14571 100644 --- a/logPlus/logPlus.pro +++ b/logPlus/logPlus.pro @@ -32,6 +32,7 @@ SOURCES += \ CallManage.cpp \ CellBorderDlg.cpp \ ConsoleOutputWidget.cpp \ + CreateResoultStructDlg.cpp \ CurveLine.cpp \ DepPairs.cpp \ DrawNrad.cpp \ @@ -112,6 +113,7 @@ HEADERS += \ CallManage.h \ CellBorderDlg.h \ ConsoleOutputWidget.h \ + CreateResoultStructDlg.h \ CurveLine.h \ DepPairs.h \ DraggablePixmap.h \ @@ -187,6 +189,7 @@ HEADERS += \ wellheader.h FORMS += \ + CreateResoultStruct.ui \ CellBorderDalog.ui \ InDefTable.ui \ SetPageMeg.ui \ diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index def27a8..693a259 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -1045,8 +1045,8 @@ void MainWindowCurve::initMainToolBar() QMenu* menuCreateTable = new QMenu(this); menuCreateTable->addAction(m_CreateDataTable); //生成数据表 menuCreateTable->addAction(m_ZONEDataTable); //分段生成数据表 - // menuCreateTable->addAction(m_SetDataTableFormat); //设置数据表格式 - // menuCreateTable->addAction(m_ReFreshZONEDataTable); //按深度表更新数据表 + menuCreateTable->addAction(m_SetDataTableFormat); //设置数据表格式 + menuCreateTable->addAction(m_ReFreshZONEDataTable); //按深度表更新数据表 CreateTableMenuAction->setMenu(menuCreateTable); // 图文件 @@ -5133,11 +5133,46 @@ void MainWindowCurve::s_ZONEDataTable() //设置数据表格式 void MainWindowCurve::s_SetDataTableFormat() -{} +{ + CQtWindowWellSection QtWindowWellSection; + QtWindowWellSection.slotSetListTableStruct(); +} //按深度表更新数据表 void MainWindowCurve::s_ReFreshZONEDataTable() -{} +{ + QString strSlfName = m_SelectTableItem.m_strSlfName; + QString strLineName = m_SelectTableItem.m_strLineName; + if(strSlfName.isEmpty() || strLineName.isEmpty()) + { + QMessageBox::information(nullptr, "提示", "先选择数据表对象!"); + return; + } + + CMemRdWt mem; + if(mem.Open(strSlfName.toStdString().c_str())) + { + int iIndex=mem.FindObjectName((char *)(strLineName.toStdString().c_str())); + if (iIndex >= 0) + { + short objectType=mem.GetObjectType(iIndex); + if(objectType <=CARD_OBJECT&&objectType!=0) + { + QMessageBox::information(nullptr, "提示", "先选择数据表对象!"); + return; + } + } + else + return; + } + else + return; + CObjWellLog* pLog= new CObjWellLog(); + pLog->SetSlfFileName(strSlfName); + pLog->SetName(strLineName); + CQtWindowWellSection QtWindowWellSection; + QtWindowWellSection.slotReFreshZoneListData(pLog); +} //选择井 void MainWindowCurve::s_selectWell() diff --git a/logPlus/qmytreewidget.cpp b/logPlus/qmytreewidget.cpp index f96d60e..ce0ccd8 100644 --- a/logPlus/qmytreewidget.cpp +++ b/logPlus/qmytreewidget.cpp @@ -126,6 +126,8 @@ void QMyTreeWidget::closeEditor ( QWidget * editor, QAbstractItemDelegate::EndEd item->setData(0, Qt::UserRole + 3, strNewName); // 存储额外数据,波列卡 } + item->setFlags(item->flags() & (~Qt::ItemIsEditable)); + if (strTreeTag == "wellItem" || strTreeTag == "wellname")//井次或井名 emit closeTreeEditor(); return; From 30d68c7c156f6a641aff891e85be68da87e2e602 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Fri, 26 Jun 2026 11:30:38 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=8F=8C=E6=9B=B2=E7=BA=BF=E5=A4=B4?= =?UTF-8?q?=EF=BC=8C=E5=87=BA=E5=9B=BE=E7=9A=84=E6=95=88=E6=9E=9C=EF=BC=8C?= =?UTF-8?q?=E4=B8=8D=E8=A6=81=E7=A9=BA=E9=9A=99=EF=BC=8C=E4=B8=8D=E8=A6=81?= =?UTF-8?q?=E4=BA=95=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/mainwindowcurve.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 81266f1..a24e6a3 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -4615,7 +4615,8 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, //双道头 if(bDoubleHead) { - iTotalSize_Height += iTableWellTrack_height*2 + (iNum-1)*iHeightOfScreen + (int)dLastHeight;//双道头 + //下方不需要井名 + iTotalSize_Height += iTableWellTrack_height*2-100 + (iNum-1)*iHeightOfScreen + (int)dLastHeight;//双道头 } else{ iTotalSize_Height += iTableWellTrack_height + (iNum-1)*iHeightOfScreen + (int)dLastHeight;//单道头 @@ -4681,10 +4682,14 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, ui->verticalScrollBar->setValue(-m_iY2*100);//设置右侧滚动条 ui->centralwidget->setGeometry(geoRect.x(), geoRect.y(), iMaxWidth, iHight+40); QPixmap pPixmap_wellTrackInfo = this->grab(QRect(geoRect.x(), geoRect.y(), iMaxWidth, iTableWellTrack_height)); + QPixmap pPixmap_wellTrackInfo2 = this->grab(QRect(geoRect.x(), geoRect.y()+ui->tableWidget_2->rowHeight(0) + (top+1), iMaxWidth, 100)); + QPixmap pPixmap_wellTrackInfo3 = this->grab(QRect(geoRect.x(), geoRect.y()+ui->tableWidget_2->rowHeight(0) + (top+1) +100, iMaxWidth, iTableSize_Head-100+2)); //保存,方便查看 if(g_iDebug) { pPixmap_wellTrackInfo.save(tmpPath + "0.png"); + pPixmap_wellTrackInfo2.save(tmpPath + "02.png"); + pPixmap_wellTrackInfo3.save(tmpPath + "03.png"); } if(IsBmp == 0 || IsBmp == 4) { @@ -4789,9 +4794,10 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, mDepthProgress.SetShowName(s); mDepthProgress.SetDepth(iNumShow+2); // - painter.drawPixmap(0, iHight_Head + iTableWellTrack_height + (iHeightOfScreen-2)*(iNum-1) + (dLastHeight), pPixmap_wellTrackInfo); + painter.drawPixmap(0, iHight_Head + iTableWellTrack_height + (iHeightOfScreen-2)*(iNum-1) + (dLastHeight), pPixmap_wellTrackInfo3); + painter.drawPixmap(0, iHight_Head + iTableWellTrack_height + (iHeightOfScreen-2)*(iNum-1) + (dLastHeight) + pPixmap_wellTrackInfo3.height(), pPixmap_wellTrackInfo2); //尾 - painter.drawPixmap(0, iHight_Head + iTableWellTrack_height*2 + (iHeightOfScreen-2)*(iNum-1) + (dLastHeight), pPixmap_Tail); + painter.drawPixmap(0, iHight_Head + iTableWellTrack_height*2-100 + (iHeightOfScreen-2)*(iNum-1) + (dLastHeight), pPixmap_Tail); //结束 painter.end(); } @@ -4814,7 +4820,8 @@ void MainWindowCurve::_slotExport(QPrinter &printer, int IsBmp, QString pngName, mDepthProgress.SetShowName(s); mDepthProgress.SetDepth(iNumShow+2); // - images.append(convertToQImage(pPixmap_wellTrackInfo)); // 将QPixmap转换为QImage并存储到列表中 + images.append(convertToQImage(pPixmap_wellTrackInfo3)); // 将QPixmap转换为QImage并存储到列表中 + images.append(convertToQImage(pPixmap_wellTrackInfo2)); // 将QPixmap转换为QImage并存储到列表中 //尾 if(iHight_Tail) { From 67c13b4f6d1ae4e8347ec4cb7f507a85b421e5c6 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Fri, 26 Jun 2026 14:09:24 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E2=80=9C=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=AF=B9=E6=AF=94=E5=90=8E=EF=BC=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?=E7=9A=84=E6=8E=A7=E5=88=B6=E7=BA=BF=E6=98=BE=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/mainwindowcurve.cpp | 2 +- logPlus/qmycustomplot.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index a24e6a3..8dad772 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -2787,7 +2787,7 @@ void MainWindowCurve::s_autocor() szBuffer+=szBuffer1; //通知界面,增加一条校深线段 - emit CallManage::getInstance()->sig_AddShifLineToPlot(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, -edep, -sdep); + emit CallManage::getInstance()->sig_AddShifLineToPlot(m_strUuid, m_LeftCurve.m_strSlfName, m_LeftCurve.m_strWellName, m_LeftCurve.m_strTrackName, m_LeftCurve.m_strLineName, -sdep, -edep); } CMemRdWt mem; if(mem.Open(m_RightCurve.m_strSlfName.toStdString().c_str())) diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index 6cb0d44..e0b69d3 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -5890,7 +5890,8 @@ void QMyCustomPlot::addLineToPlot_Master(double left_Low, double right_Hight, co if(pDraggableLine->m_strUuid == strUuid_biaozhun) { //存在老的同id线段,进行移动 - pDraggableLine->setRange(left_Low, right_Hight); + pDraggableLine->setRange(right_Hight, right_Hight); + //pDraggableLine->setRange(left_Low, right_Hight); return; } it++; From 19774964d9631bb81a9602f722514e4b2fc01e10 Mon Sep 17 00:00:00 2001 From: jiayulong Date: Fri, 26 Jun 2026 15:02:23 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E2=80=9C=E5=8E=9F?= =?UTF-8?q?=E5=B0=BA=E5=AF=B8=E2=80=9D=E6=8C=89=E9=92=AE=EF=BC=8C=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E7=BC=A9=E6=94=BE=E5=89=8D=E7=9A=84=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- logPlus/mainwindowcurve.cpp | 22 ++++++++++++++++++++-- logPlus/mainwindowcurve.h | 6 ++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 8dad772..0f2feaf 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -981,6 +981,7 @@ void MainWindowCurve::initMainToolBar() QIcon sizeIcon(::GetImagePath()+"icon/full_scale.png"); QIcon zoominIcon(::GetImagePath()+"icon/zoomin.png"); QIcon zoomoutIcon(::GetImagePath()+"icon/zoomout.png"); + QIcon zoomoldIcon(::GetImagePath()+"icon/full_scale.png"); QIcon wellTopAlignIcon(::GetImagePath()+"WellInterp/井顶对齐.png"); QIcon wellsSpaceIcon(::GetImagePath()+"WellInterp/井间距离.png"); @@ -994,6 +995,7 @@ void MainWindowCurve::initMainToolBar() m_zoomAc = new QAction(zoomIcon, "缩放", this); m_zoominAc = new QAction(zoominIcon, "放大", this); m_zoomoutAc = new QAction(zoomoutIcon, "缩小", this); + m_zoomoldAc = new QAction(zoomoldIcon, "原尺寸", this); m_SaveAsPictureAc = new QAction(SaveAsPictureIcon, "导出长图", this); m_SaveAsPdfAc = new QAction(SaveAsPdfIcon, "导出PDF", this); m_SaveAsSvgAc = new QAction(SaveAsSvgIcon, "导出SVG", this); @@ -1025,6 +1027,7 @@ void MainWindowCurve::initMainToolBar() QMenu* menuZoom = new QMenu(this); menuZoom->addAction(m_zoominAc); //放大 menuZoom->addAction(m_zoomoutAc); //缩小 + menuZoom->addAction(m_zoomoldAc); //还原 zoomMenuAction->setMenu(menuZoom); // 导出成果图 @@ -1116,6 +1119,7 @@ void MainWindowCurve::initMainToolBar() connect(m_zoomAc, &QAction::triggered, this, &MainWindowCurve::s_Zoom); connect(m_zoominAc, &QAction::triggered, this, &MainWindowCurve::s_ZoomIn); connect(m_zoomoutAc, &QAction::triggered, this, &MainWindowCurve::s_ZoomOut); + connect(m_zoomoldAc, &QAction::triggered, this, &MainWindowCurve::s_ZoomOld); connect(m_SaveAsPictureAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsPicture); connect(m_SaveAsPdfAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsPdf); connect(m_SaveAsSvgAc, &QAction::triggered, this, &MainWindowCurve::s_SaveAsSvg); @@ -4163,14 +4167,28 @@ void MainWindowCurve::s_Zoom() void MainWindowCurve::s_ZoomIn() { //宽度放大 - ZoomIn(1.1); + double dCurScale = (double)1.0 / (double)0.9; + ZoomIn(dCurScale);//1.1 + // + m_dScale = m_dScale/dCurScale; } //缩小 void MainWindowCurve::s_ZoomOut() { //宽度缩小 - ZoomIn(0.9); + double dCurScale = 0.9; + ZoomIn(dCurScale); + // + m_dScale = m_dScale/dCurScale; +} + +//还原 +void MainWindowCurve::s_ZoomOld() +{ + ZoomIn(m_dScale); + // + m_dScale = 1.0; } //导出长图 diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index ab78dcb..5c2102a 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -263,6 +263,7 @@ public: QAction* m_zoomAc = nullptr; //缩放 QAction* m_zoominAc = nullptr; //放大 QAction* m_zoomoutAc = nullptr; //缩小 + QAction* m_zoomoldAc = nullptr; //还原 QAction* m_SaveAsPictureAc = nullptr; //导出长图 QAction* m_SaveAsPdfAc = nullptr; //导出PDF QAction* m_SaveAsSvgAc = nullptr; //导出SVG @@ -289,6 +290,8 @@ public: //参数卡深度平移校正 QTextEdit *pTDialog; + //缩放还原 + double m_dScale = 1.0; public slots: void s_NewWell(QString strWellName, QString strSlfName, bool bShowTrackHead = true);//新建井 void s_NewTrackChangeWidth(QString strWellName, double nW=0);//新建道后,改变井宽 @@ -396,9 +399,12 @@ public slots: void s_ZONEDataTable(); //分段生成数据表 void s_SetDataTableFormat();//设置数据表格式 void s_ReFreshZONEDataTable();//按深度表更新数据表 + // void s_Zoom(); //缩放 void s_ZoomIn(); //放大 void s_ZoomOut(); //缩小 + void s_ZoomOld(); //还原 + void s_Black(); //黑白图 void s_DoubleHead(); //单曲线头 void s_ExecuteDepthShift(); //校深