diff --git a/common/common.h b/common/common.h index 0bb41e2..3a41646 100644 --- a/common/common.h +++ b/common/common.h @@ -13,4 +13,13 @@ enum BorderFlag { }; Q_DECLARE_FLAGS(BorderFlags, BorderFlag) +struct GridProperty +{ + GridProperty() :m_nInv(1), m_nWidth(1), m_clor(0, 0, 0), m_nType(1) {} + int m_nInv; + int m_nWidth; + QColor m_clor; + int m_nType; +}; + #endif // LOG_COMMON_H diff --git a/logPlus/PropertyWidget.cpp b/logPlus/PropertyWidget.cpp index b1934e5..0b3f422 100644 --- a/logPlus/PropertyWidget.cpp +++ b/logPlus/PropertyWidget.cpp @@ -2769,8 +2769,8 @@ void PropertyWidget::initWellProperty(QString strUuid, QString strSlfName, QStri void PropertyWidget::initGridProperty(QString strGroup, QStringList slist, GridProperty& gridp) { if (strGroup != "边框") - _CreateVariantPropertyItem(strGroup, "间隔(m)", gridp.m_nInv, QVariant::Int); - _CreateVariantPropertyItem(strGroup, "线宽", gridp.m_nWidth, QVariant::Int); + _CreateVariantPropertyItem(strGroup, "间隔(m)", gridp.m_nInv, QVariant::Int, 1, 100); + _CreateVariantPropertyItem(strGroup, "线宽", gridp.m_nWidth, QVariant::Int, 1, 10); _CreateVariantPropertyItem(strGroup, "颜色", gridp.m_clor, QVariant::Color); QStringList listStyle; @@ -2804,6 +2804,34 @@ void PropertyWidget::initTrackProperty(FormTrackTop *fromTop, int iWidth, QMyTab _CreateVariantPropertyItem("通常", "道名称", m_strTrackName, QVariant::String); _CreateVariantPropertyItem("通常", "道头字体", fromTop->m_font, QVariant::Font); _CreateVariantPropertyItem("通常", "道头字颜色", fromTop->m_fontColor, QVariant::Color); +// +// _CreateVariantPropertyItem("网格", "水平", fromTop->m_nTrackW, QVariant::Bool); +// _CreateVariantPropertyItem("网格", "垂直", fromTop->m_nTrackW, QVariant::Bool); +// _CreateVariantPropertyItem("网格", "道左刻度", fromTop->m_nTrackW, QVariant::Double); +// _CreateVariantPropertyItem("网格", "道右刻度", fromTop->m_nTrackW, QVariant::Double); +// _CreateVariantPropertyItem("网格", "同步修改曲线刻度", fromTop->m_nTrackW, QVariant::Double); +// _CreateVariantPropertyItem("网格", "道垂直网格数", fromTop->m_nTrackW, QVariant::Double); +// _CreateVariantPropertyItem("网格", "垂直网格粗线间隔", fromTop->m_nTrackW, QVariant::Double); +// +// QStringList listStyle; +// listStyle.append("无"); +// listStyle.append("实线"); +// listStyle.append("虚线"); +// listStyle.append("点线"); +// listStyle.append("虚点线"); +// listStyle.append("虚点点线"); +// _CreateVariantPropertyItem("垂直网格细线线型", "线宽", formInfo->m_dWidth, QVariant::Int); +// _CreateVariantPropertyItem("垂直网格细线线型", "颜色", formInfo->m_lineColor, QVariant::Color); +// _CreateEnumPropertyItem("垂直网格细线线型", "线型", (int)formInfo->m_lineStyle, listStyle); +// +// _CreateVariantPropertyItem("垂直网格粗线线型", "线宽", formInfo->m_dWidth, QVariant::Int); +// _CreateVariantPropertyItem("垂直网格粗线线型", "颜色", formInfo->m_lineColor, QVariant::Color); +// _CreateEnumPropertyItem("垂直网格粗线线型", "线型", (int)formInfo->m_lineStyle, listStyle); +// +// _CreateVariantPropertyItem("边框", "绘制顶边框", fromTop->m_nTrackW, QVariant::Bool); +// _CreateVariantPropertyItem("边框", "绘制底边框", fromTop->m_nTrackW, QVariant::Bool); +// _CreateVariantPropertyItem("边框", "绘制左边框", fromTop->m_nTrackW, QVariant::Bool); +// _CreateVariantPropertyItem("边框", "绘制右边框", fromTop->m_nTrackW, QVariant::Bool); //当前属性类型 m_strCurrentProperty = Track_Property; diff --git a/logPlus/formdraw.cpp b/logPlus/formdraw.cpp index 4aa4036..29c8db3 100644 --- a/logPlus/formdraw.cpp +++ b/logPlus/formdraw.cpp @@ -40,6 +40,8 @@ FormDraw::FormDraw(QWidget *parent, QString strWellName, QString strTrackName) : ui->setupUi(this); setAcceptDrops(true); + m_pFWell = qobject_cast(parent); + m_strWellName = strWellName; m_strTrackName = strTrackName; m_nSltk=15.0;//杆状图长度 @@ -2798,7 +2800,7 @@ void FormDraw::paintEvent(QPaintEvent*) rect.setTop(rect.top() + 1); // 3. 准备绘制边框 painter.save(); - painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义 + painter.setPen(QPen(m_pFWell->getBorderGridProperty().m_clor, m_pFWell->getBorderGridProperty().m_nWidth)); // 颜色、宽度可自定义 // 上边框 if (m_BorderFlags & TopBorder) { @@ -3149,10 +3151,10 @@ void FormDraw::s_mouseWheel(QWheelEvent *event) emit CallManage::getInstance()->sig_mouseWheel(event); } -void FormDraw::setColWidth(int iNewWidth) +void FormDraw::setColWidth(float fNewWidth) { - m_nTrackW = iNewWidth; - iNewWidth = iNewWidth * g_dPixelPerCm; + m_nTrackW = fNewWidth; + fNewWidth = fNewWidth * g_dPixelPerCm; // 获取当前widget的所有子控件 const QObjectList &children = this->children(); //判断为空 diff --git a/logPlus/formdraw.h b/logPlus/formdraw.h index bc9c47e..b8a496d 100644 --- a/logPlus/formdraw.h +++ b/logPlus/formdraw.h @@ -11,6 +11,7 @@ #include "MemRdWt.h" #include "FormLine.h" #include "common.h" +#include "formwell.h" #pragma execution_character_set("utf-8") @@ -107,7 +108,7 @@ public: private: Ui::FormDraw *ui; - + FormWell* m_pFWell = NULL; protected: void paintEvent(QPaintEvent *event); @@ -122,7 +123,7 @@ public slots: void s_mouseWheel(QWheelEvent *event); void setRowHeight(double dHight, QProgressBar *progressBar, int iSplit); - void setColWidth(int iNewWidth); + void setColWidth(float fNewWidth); public: QString m_strUuid; diff --git a/logPlus/formtrack.cpp b/logPlus/formtrack.cpp index d71a633..d24f246 100644 --- a/logPlus/formtrack.cpp +++ b/logPlus/formtrack.cpp @@ -3,6 +3,7 @@ #include #include "CallManage.h" #include "geometryutils.h" +#include "formwell.h" extern int g_iOneWidth; //道宽 @@ -13,6 +14,8 @@ FormTrack::FormTrack(QWidget *parent, QString strWellName, QString strTrackName) { ui->setupUi(this); + m_pFWell = qobject_cast(parent); + m_strTrackUuid = getUUid(); m_strWellName = strWellName; m_strTrackName = strTrackName; @@ -188,7 +191,7 @@ void FormTrack::paintEvent(QPaintEvent *event) rect.setTop(rect.top() + 1); // 绘制边框 painter.save(); - painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义 + painter.setPen(QPen(m_pFWell->getBorderGridProperty().m_clor, m_pFWell->getBorderGridProperty().m_nWidth)); // 颜色、宽度可自定义 // 上边框 if (m_BorderFlags & TopBorder) { diff --git a/logPlus/formtrack.h b/logPlus/formtrack.h index c581737..b449f01 100644 --- a/logPlus/formtrack.h +++ b/logPlus/formtrack.h @@ -11,7 +11,7 @@ namespace Ui { class FormTrack; } - +class FormWell; //class NoLRBorderDelegate : public QStyledItemDelegate //{ //public: @@ -61,7 +61,7 @@ public: private: Ui::FormTrack *ui; - + FormWell* m_pFWell = NULL; protected: void paintEvent(QPaintEvent *event); diff --git a/logPlus/formtracktop.cpp b/logPlus/formtracktop.cpp index 79d5c10..8f9d605 100644 --- a/logPlus/formtracktop.cpp +++ b/logPlus/formtracktop.cpp @@ -7,6 +7,7 @@ #include #include #include "geometryutils.h" +#include "formwell.h" //曲线名称(单个) FormTrackTop::FormTrackTop(QWidget *parent, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QColor lineColor) : @@ -17,6 +18,8 @@ FormTrackTop::FormTrackTop(QWidget *parent, QString strSlfName, QString strWellN // setAcceptDrops(true); + m_pFWell = qobject_cast(parent); + m_strSlfName = strSlfName; m_strWellName = strWellName; m_strTrackName = strTrackName; @@ -75,13 +78,29 @@ void FormTrackTop::paintEvent(QPaintEvent* event) painter.setBrush(Qt::NoBrush); // 确保文字不被填充色遮挡 painter.setFont(m_font); painter.setPen(m_fontColor); // fontColor QColor(220, 220, 220) - painter.drawText(rect.left(), rect.top(), rect.width(), rect.height(), Qt::AlignCenter, m_strTrackName); + + bool bVer = false; + QString text = m_strTrackName; + QFontMetrics fm1(m_font); + QRect textRect = fm1.boundingRect(m_strTrackName); + if (textRect.width() > rect.width()) + { + text = ""; + for (int i = 0; i < m_strTrackName.size(); i++) { + if (!i)text += m_strTrackName.at(i); + else { + text += "\n"; + text += m_strTrackName.at(i); + } + } + } + painter.drawText(rect.left(), rect.top(), rect.width(), rect.height(), Qt::AlignCenter, text); rect.setLeft(rect.left() + 1); rect.setTop(rect.top() + 1); // 3. 准备绘制边框 painter.save(); - painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义 + painter.setPen(QPen(m_pFWell->getBorderGridProperty().m_clor, m_pFWell->getBorderGridProperty().m_nWidth)); // 颜色、宽度可自定义 // 上边框 if (m_BorderFlags & TopBorder) { diff --git a/logPlus/formtracktop.h b/logPlus/formtracktop.h index ae99714..14199f7 100644 --- a/logPlus/formtracktop.h +++ b/logPlus/formtracktop.h @@ -15,7 +15,7 @@ namespace Ui { class FormTrackTop; } - +class FormWell; class FormTrackTop : public QWidget { Q_OBJECT @@ -55,12 +55,16 @@ public: BorderFlags m_BorderFlags; + + public: QJsonObject makeJson(); private: QPoint startPosition; + + FormWell* m_pFWell = NULL; }; #endif // FormTrackTop_H diff --git a/logPlus/formwell.cpp b/logPlus/formwell.cpp index 247a115..47d48fd 100644 --- a/logPlus/formwell.cpp +++ b/logPlus/formwell.cpp @@ -5,6 +5,7 @@ #include "geometryutils.h" #include "mainwindowcurve.h" #include "PropertyWidget.h" +#include "wellheader.h" extern int g_iOneWidth; //道宽 //extern int m_iY1; @@ -34,6 +35,9 @@ FormWell::FormWell(QWidget *parent, QString strWellName) : m_xiProperty.m_clor = QColor(208,208,208); + m_borderProperty.m_clor = Qt::black; + m_borderProperty.m_nWidth = 2; + //ui->tableWidget->verticalHeader()->hide(); //行 ui->tableWidget->horizontalHeader()->hide();//列 int rowcount = 3; //总行数 @@ -84,6 +88,12 @@ FormWell::~FormWell() delete ui; } +void FormWell::setWellHeader(WellHeader* pHeader) +{ + m_pWHeader = pHeader; + pHeader->m_pFormWell = this; +} + void FormWell::resizeEvent(QResizeEvent *event) { //重设表格高度 @@ -219,7 +229,7 @@ QVector FormWell::new_track(QStringList listdt, QString strTrackName) else if(i==1) { //设置高度 - ui->tableWidget->setRowHeight(i, 300); + ui->tableWidget->setRowHeight(i, m_nObjLyrH); //曲线名称栏 formTrack = new FormTrack(this, strWellName, strTrackName); @@ -336,7 +346,7 @@ void FormWell::paintEvent(QPaintEvent *event) rect.setTop(rect.top() + 1); // 3. 准备绘制边框 painter.save(); - painter.setPen(QPen(Qt::black, 2)); // 颜色、宽度可自定义 + painter.setPen(QPen(m_borderProperty.m_clor, m_borderProperty.m_nWidth)); // 颜色、宽度可自定义 // 上边框 if (m_BorderFlags & TopBorder) { @@ -671,19 +681,28 @@ void FormWell::setWellProperty(QVariantList listVal) gridpt->m_nType = listVal.at(2).toInt(); } - int columnCount = ui->tableWidget->columnCount();//总列数 - for (int i = 0; i < columnCount; i++) + if (strGroup == "边框") { - if (ui->tableWidget->cellWidget(1, i) == nullptr) - continue; - auto myWidget = ui->tableWidget->cellWidget(2, i); - if (myWidget == nullptr) - continue; - - FormDraw *formDraw = qobject_cast(myWidget); - if (formDraw) + update(); + if(m_pWHeader) + m_pWHeader->update(); + } + else + { + int columnCount = ui->tableWidget->columnCount();//总列数 + for (int i = 0; i < columnCount; i++) { - formDraw->changeGridProperty(strGroup, gridpt->m_nInv, gridpt->m_nWidth, gridpt->m_clor, gridpt->m_nType); + if (ui->tableWidget->cellWidget(1, i) == nullptr) + continue; + auto myWidget = ui->tableWidget->cellWidget(2, i); + if (myWidget == nullptr) + continue; + + FormDraw *formDraw = qobject_cast(myWidget); + if (formDraw) + { + formDraw->changeGridProperty(strGroup, gridpt->m_nInv, gridpt->m_nWidth, gridpt->m_clor, gridpt->m_nType); + } } } } @@ -957,7 +976,7 @@ void FormWell::getTableSize_Head(int &iHight) } if(iHight == 0) { - iHight = 100 + 300; + iHight = 100 + m_nObjLyrH; } } diff --git a/logPlus/formwell.h b/logPlus/formwell.h index 80d7f8f..4cddce4 100644 --- a/logPlus/formwell.h +++ b/logPlus/formwell.h @@ -9,19 +9,10 @@ #pragma execution_character_set("utf-8") -struct GridProperty -{ - GridProperty() :m_nInv(1), m_nWidth(1), m_clor(0, 0, 0), m_nType(1) {} - int m_nInv; - int m_nWidth; - QColor m_clor; - int m_nType; -}; - namespace Ui { class FormWell; } - +class WellHeader; class FormWell : public QWidget { Q_OBJECT @@ -30,6 +21,7 @@ public: explicit FormWell(QWidget *parent = nullptr, QString strWellName=""); ~FormWell(); + void setWellHeader(WellHeader* pHeader); // 插入列,返回列索引 int insertColumn(double dw); @@ -54,16 +46,20 @@ protected: void resizeWindow(); private: Ui::FormWell *ui; - + WellHeader* m_pWHeader = NULL; GridProperty m_cuProperty; // 粗网格 GridProperty m_zhongProperty; // 中网格 GridProperty m_xiProperty; // 细网格 GridProperty m_borderProperty; // 边框 + GridProperty m_verCuProperty; // 粗网格 + GridProperty m_verXiProperty; // xi网格 + public: QString m_strUuid; QString m_strWellName; QString m_strSlfName=""; + int m_nObjLyrH = 100; int m_iScale=200; double m_iY1=0; double m_iY2=0; diff --git a/logPlus/logplus.vcxproj b/logPlus/logplus.vcxproj index abbd341..bad6d74 100644 --- a/logPlus/logplus.vcxproj +++ b/logPlus/logplus.vcxproj @@ -11,6 +11,7 @@ + @@ -216,6 +217,7 @@ + diff --git a/logPlus/logplus.vcxproj.filters b/logPlus/logplus.vcxproj.filters index 529fc64..708e68d 100644 --- a/logPlus/logplus.vcxproj.filters +++ b/logPlus/logplus.vcxproj.filters @@ -316,6 +316,9 @@ Header Files + + Header Files + @@ -660,6 +663,9 @@ libtiff\port + + Source Files + diff --git a/logPlus/mainwindowcurve.cpp b/logPlus/mainwindowcurve.cpp index 55dcee7..5e86364 100644 --- a/logPlus/mainwindowcurve.cpp +++ b/logPlus/mainwindowcurve.cpp @@ -22,6 +22,7 @@ #include "TIFFIO.H" #include "TIFF.H" #include "DepthProgress.h" +#include "wellheader.h" //主窗口,为了方便获取tab当前页 extern MainWindow *g_mainWindow; @@ -2152,13 +2153,14 @@ QStringList MainWindowCurve::insertCol(int nW) return sret; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, column)); + if (pWheader) + { + sret << pWheader->m_strWellName << pWheader->m_strSlfName; + } //设置列宽 ui->tableWidget_2->setColumnWidth(column, iWidth+nW*g_dPixelPerCm); - - sret << strWellName << strSlfName; - return sret; } @@ -2191,12 +2193,11 @@ QStringList MainWindowCurve::getSelectWell_New() } else if(ui->tableWidget_2->columnCount()==1) { - //单井 - QString strWellName = ui->tableWidget_2->item(0, 0)->text(); - //直接从单井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, 0)->data(Qt::UserRole+1).toString(); - - sret << strWellName << strSlfName; + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, 0)); + if (pWheader) + { + sret << pWheader->m_strWellName << pWheader->m_strSlfName; + } return sret; } else @@ -2255,12 +2256,11 @@ QStringList MainWindowCurve::getSelectWell() return sret; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); - - sret << strWellName << strSlfName; - + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, column)); + if (pWheader) + { + sret << pWheader->m_strWellName << pWheader->m_strSlfName; + } return sret; } @@ -3175,19 +3175,27 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName) QTableWidgetItem *headerItem = new QTableWidgetItem(""); ui->tableWidget_2->setHorizontalHeaderItem(columnCount, headerItem); + WellHeader *wellH = NULL; for(int i=0; itableWidget_2->setRowHeight(i, 100); + + wellH = new WellHeader(this, strSlfName, strWellName); + wellH->m_strUuid = m_strUuid; + wellH->setBorderFlags(BorderFlags(TopBorder |BottomBorder | LeftBorder | RightBorder)); + // + ui->tableWidget_2->setCellWidget(i, columnCount, wellH); + // - QTableWidgetItem* item = new QTableWidgetItem(strWellName); - setItemBorderFlags(item, BorderFlags(TopBorder | BottomBorder | LeftBorder | RightBorder)); - item->setData(Qt::UserRole + 1, strSlfName); - item->setFlags(item->flags() & (~Qt::ItemIsEditable)); - item->setTextAlignment(Qt::AlignCenter); //设置文本居中 - ui->tableWidget_2->setItem(i, columnCount, item); +// QTableWidgetItem* item = new QTableWidgetItem(strWellName); +// setItemBorderFlags(item, BorderFlags(TopBorder | BottomBorder | LeftBorder | RightBorder)); +// item->setData(Qt::UserRole + 1, strSlfName); +// item->setFlags(item->flags() & (~Qt::ItemIsEditable)); +// item->setTextAlignment(Qt::AlignCenter); //设置文本居中 +// ui->tableWidget_2->setItem(i, columnCount, item); } else { @@ -3203,7 +3211,7 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName) dHight = 32767; } - dHight = dHight+300+100+10; + dHight = dHight+ m_nObjLayerH +100+10; //设置高度 //jyl ui->tableWidget_2->setRowHeight(i, (int)dHight); // 屏幕高度 @@ -3222,7 +3230,7 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName) } // //获取井well前2行的高度 - int iTableSize_Head = 100 + 300; + int iTableSize_Head = 100 + m_nObjLayerH; //此处还没有生成well,所以不能这样获取 //getTableSize_Head(iTableSize_Head); // @@ -3234,7 +3242,9 @@ void MainWindowCurve::s_NewWell(QString strWellName, QString strSlfName) widgetWell->m_iY2 = m_iY2; widgetWell->m_strUuid = m_strUuid; widgetWell->m_strSlfName = strSlfName; + widgetWell->m_nObjLyrH = m_nObjLayerH; widgetWell->m_iScale = m_iScale; + widgetWell->setWellHeader(wellH); // ui->tableWidget_2->setCellWidget(i, columnCount, widgetWell);//默认用widgetWell填充满 m_mapFWell.insert(strWellName, widgetWell); @@ -3368,7 +3378,10 @@ void MainWindowCurve::s_NewTrack() return; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); + QStringList sret = this->getSelectWell(); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); //新建道 emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, "", "", ""); @@ -3380,75 +3393,15 @@ void MainWindowCurve::s_NewTrack() void MainWindowCurve::s_NewDepth() { int column = -1; - int nW = 3; - QString strSlfName = ""; - - //如果视图为空,则根据左侧选中的井来创建深度道 - if(ui->tableWidget_2->columnCount()==0) - { - QString strLeft = m_leftWidgets->getLeftTreeString(); - if(strLeft.length() > 0) - { - QStringList list = strLeft.split("#@@#");//QString字符串分割函数 - if (list.size() > 3) - { - strSlfName = list[0]; - QString strWellName = list[1]; - // QString strLineName = list[2]; - // QString strType = list[3]; - - if(!m_listWell.contains(strWellName)) - { - //井没创建,创建井+道+曲线 - //新建井 - s_NewWell(strWellName, strSlfName); - //m_listWell.push_back(strWellName);//重复添加 - - column= 0; - } - } - } - //return; - } - - int iWidth = 0; - if(column < 0) - { - column = ui->tableWidget_2->currentColumn();//列编号从0开始 - iWidth = ui->tableWidget_2->columnWidth(column); - } - - if(column<0) - { - //当前没有选中井 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - if(column%2==0) - { - } - else - { - //空白列 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - if(strSlfName=="") - { - strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); - } - - //设置列宽 - ui->tableWidget_2->setColumnWidth(column, iWidth+nW*g_dPixelPerCm+8); + int nW = 2; + QStringList sret = this->insertCol(nW); + if (sret.length() <= 0) + return; QStringList dt; dt << m_strUuid; - dt << strWellName; - dt << strSlfName; + dt << sret.at(0); + dt << sret.at(1); dt << "深度"; dt << "depthObject"; dt << QString::number(nW); @@ -3682,49 +3635,16 @@ void MainWindowCurve::s_NewShowDip() void MainWindowCurve::s_pinLvAc() { - int column = -1; int nW = 4; - if(ui->tableWidget_2->columnCount()==0) - { - return; - } - - int iWidth = 0; - if(column < 0) - { - column = ui->tableWidget_2->currentColumn();//列编号从0开始 - iWidth = ui->tableWidget_2->columnWidth(column); - } - - if(column<0) - { - //当前没有选中井 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - if(column%2==0) - { - } - else - { - //空白列 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); - - //设置列宽 - ui->tableWidget_2->setColumnWidth(column, iWidth+nW*g_dPixelPerCm+8); + QStringList sret = this->insertCol(nW); + if (sret.length() <= 0) + return; QStringList dt; dt << m_strUuid; - dt << strWellName; - dt << strSlfName; + dt << sret.at(0); + dt << sret.at(1); dt << ""; dt << "plObject"; dt << QString::number(nW); @@ -3734,38 +3654,13 @@ void MainWindowCurve::s_pinLvAc() void MainWindowCurve::s_NewGanZhuangTu() { - if(ui->tableWidget_2->columnCount()==0) - { - return; - } - - int column = ui->tableWidget_2->currentColumn();//列编号从0开始 - if(column<0) - { - //当前没有选中井 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - if(column%2==0) - { - } - else - { - //空白列 - QMessageBox::warning(this, "提示", "当前没有选中井", "确定"); - return; - } - - QString strWellName = ui->tableWidget_2->item(0, column)->text(); + int nW = 4; + QStringList sret = this->insertCol(nW); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); - - int iWidth = ui->tableWidget_2->columnWidth(column); - - int nW = 4; - //设置列宽 - ui->tableWidget_2->setColumnWidth(column, iWidth+nW*g_dPixelPerCm+8); + QString strSlfName = sret.at(1); //新建道 emit CallManage::getInstance()->sig_NewTrack(m_strUuid, strWellName, strSlfName, "杆状图", "ganzhuangtuObject", nW); @@ -3833,9 +3728,12 @@ void MainWindowCurve::s_Jykt() return; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); + QStringList sret = this->getSelectWell_New(); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); + //直接从选中的井获取,data记录slf路径 + QString strSlfName = sret.at(1); int iWidth = ui->tableWidget_2->columnWidth(column); @@ -3884,9 +3782,12 @@ void MainWindowCurve::s_Denv() return; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); + QStringList sret = this->getSelectWell_New(); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); + //直接从选中的井获取,data记录slf路径 + QString strSlfName = sret.at(1); int iWidth = ui->tableWidget_2->columnWidth(column); @@ -3935,9 +3836,12 @@ void MainWindowCurve::s_DrawImage() return; } - QString strWellName = ui->tableWidget_2->item(0, column)->text(); - //直接从选中的井获取,data记录slf路径 - QString strSlfName = ui->tableWidget_2->item(0, column)->data(Qt::UserRole+1).toString(); + QStringList sret = this->getSelectWell_New(); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); + //直接从选中的井获取,data记录slf路径 + QString strSlfName = sret.at(1); int iWidth = ui->tableWidget_2->columnWidth(column); @@ -4084,8 +3988,8 @@ void MainWindowCurve::s_NewTrackChangeWidth(QString strWellName, double nW) continue; } // - QString strWellNameTemp = ui->tableWidget_2->item(0, i)->text(); - if(strWellNameTemp==strWellName) + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, i)); + if(pWheader && pWheader->m_strWellName==strWellName) { int iWidth = ui->tableWidget_2->columnWidth(i);//设置列宽 ui->tableWidget_2->setColumnWidth(i, iWidth + ntmpw + 6); @@ -4453,7 +4357,7 @@ void MainWindowCurve::s_changeScale(QString strUuid, int iNewScale) dHight = 32767; } - double dHightOne = dHight+300+100+10; + double dHightOne = dHight+ m_nObjLayerH +100+10; //设置高度 //jyl ui->tableWidget_2->setRowHeight(1, (int)dHightOne); @@ -4582,7 +4486,7 @@ void MainWindowCurve::s_changeDepth(QString strUuid, QString strSlfName, QString } dHightMax = dHightMax*100.0/(double)m_iScale * g_dPixelPerCm; - double dHightOne = dHightMax+300+100+10; + double dHightOne = dHightMax+ m_nObjLayerH +100+10; //设置高度 //jyl ui->tableWidget_2->setRowHeight(1, (int)dHightOne); @@ -4660,7 +4564,7 @@ void MainWindowCurve::changeDepthForPrint() } // //获取井well前2行的高度 - int iTableSize_Head = 100 + 300; + int iTableSize_Head = 100 + m_nObjLayerH; //此处还没有生成well,所以不能这样获取 //getTableSize_Head(iTableSize_Head); // @@ -4890,7 +4794,20 @@ void MainWindowCurve::resizeItem(QString strWellName, double colWidth, double ro continue; } // - QString strWellNameTemp = ui->tableWidget_2->item(0, i)->text(); + QStringList sret = this->getSelectWell_New(); + if (sret.length() <= 0) + return; + QString strWellName = sret.at(0); + //直接从选中的井获取,data记录slf路径 + QString strSlfName = sret.at(1); + + QString strWellNameTemp = ""; + WellHeader* pWheader = qobject_cast(ui->tableWidget_2->cellWidget(0, i)); + if (pWheader) + { + strWellNameTemp = pWheader->m_strWellName; + } + if(strWellNameTemp==strWellName) { ui->tableWidget_2->setColumnWidth(i, colWidth+8); @@ -4997,7 +4914,7 @@ void MainWindowCurve::getTableSize_Head(int &iHight) { if(iHight == 0) { - iHight = 100 + 300; + iHight = 100 + m_nObjLayerH; } return; @@ -5019,7 +4936,7 @@ void MainWindowCurve::getTableSize_Head(int &iHight) // if(iHight == 0) { - iHight = 100 + 300; + iHight = 100 + m_nObjLayerH; } } diff --git a/logPlus/mainwindowcurve.h b/logPlus/mainwindowcurve.h index b7ae212..9486b63 100644 --- a/logPlus/mainwindowcurve.h +++ b/logPlus/mainwindowcurve.h @@ -87,6 +87,7 @@ public: QLineEdit *spinbox2; QLineEdit *spinbox3; + int m_nObjLayerH = 104; // 对象层高度 int m_iScale=200; double m_iY1=-1000; double m_iY2=0; diff --git a/logPlus/qmycustomplot.cpp b/logPlus/qmycustomplot.cpp index c492274..f01f6ba 100644 --- a/logPlus/qmycustomplot.cpp +++ b/logPlus/qmycustomplot.cpp @@ -11727,15 +11727,20 @@ void QMyCustomPlot::vertScrollBarChanged(QString strUuid, int value) { if (qAbs(xAxis->range().center()-value) > 0.01) // if user is dragging plot, we don't want to replot twice { + xAxis->setRange(-value, xAxis->range().size(), Qt::AlignRight); - replot(); + const QCPRange& rg = xAxis->range(); + this->updateDepthY(rg.lower, rg.upper); + replot(); } } else{ if (qAbs(this->yAxis->range().center()+value) > 0.01) // if user is dragging plot, we don't want to replot twice { this->yAxis->setRange(-value, this->yAxis->range().size(), Qt::AlignRight); - this->replot(); + const QCPRange& rg = yAxis->range(); + this->updateDepthY(rg.lower, rg.upper); + replot(); } } }