波列数据,删除对象层bug, 崩溃问题。

This commit is contained in:
DESKTOP-450PEFP\mainc 2026-06-03 10:09:39 +08:00
parent 6269488569
commit c5de21e950
14 changed files with 84 additions and 27 deletions

View File

@ -109,7 +109,7 @@ signals:
//新建波列
void sig_AddWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);
//删除波列
void sig_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void sig_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid);
//新建表格曲线
void sig_AddTableLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName);

View File

@ -42,6 +42,14 @@ void FormBase::paintEvent(QPaintEvent* event)
int b = rect.bottom();
int l = rect.left();
int r = rect.right();
if (m_nbleft > 0)
{
l = m_nbleft;
}
if (m_nbright > 0)
{
r = m_nbright;
}
// 上边框
if (m_BorderFlags & TopBorder) {
painter.drawLine(l, t + nbw / 2, r, t + nbw / 2);

View File

@ -35,7 +35,8 @@ public:
bool m_press;//判断鼠标是否按下
BorderFlags m_BorderFlags;
FormWell* m_pFormWell = NULL;
int m_nbleft = 0;
int m_nbright = 0;
};

View File

@ -63,7 +63,7 @@ FormDraw::FormDraw(QWidget *parent, QString strSlfName, QString strWellName, QSt
connect(CallManage::getInstance(), SIGNAL(sig_MouseMove(QString, QString, QString, float, float)), this, SLOT(s_MouseMove(QString, QString, QString, float, float)));
//波列
connect(CallManage::getInstance(), SIGNAL(sig_AddWave(QString, QString, QString, QString, QString)), this, SLOT(s_addWave(QString, QString, QString, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString)), this, SLOT(s_delWave(QString, QString, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString, QString)), this, SLOT(s_delWave(QString, QString, QString, QString, QString)));
//表格
connect(CallManage::getInstance(), SIGNAL(sig_AddTableLine(QString, QString, QString, QString, QString)), this, SLOT(s_addTableLine(QString, QString, QString, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delTableLine(QString, QString, QString, QString)), this, SLOT(s_delTableLine(QString, QString, QString, QString)));
@ -168,6 +168,7 @@ void FormDraw::setDrawData(QStringList listdt, QJsonObject objInfo)
pwave->setDepthY(m_iY1, m_iY2);
pwave->initGeometry(m_strUuid, m_iScale, dW, m_nObjDrawH);
pwave->m_formTrack = m_formTrack;
pwave->m_strObjUuid = pInfo->m_strObjUuid;
pwave->show();
}
else if ("DrawImageObject" == strType)
@ -3063,6 +3064,14 @@ void FormDraw::crossTrackSetting(bool bcross)
selfRt.setWidth((nleft + nright + 1)*nSingleW);
this->setGeometry(selfRt);
m_nbleft = 0;
m_nbright = 0;
if (nleft > 0 || nright > 0) {
m_nbleft = nleft * nSingleW;
m_nbright = m_nbleft + nSingleW;
}
// if (nright > 0)
// m_nbright = (nright + 1)*nSingleW;
}
void FormDraw::addCusPlot(QMyCustomPlot* plot)
@ -3567,10 +3576,12 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam
nW = g_iOneWidth;
bool bDraw = true;
QString strObjUuid = "";
if (bDraw)
{
FormWave *pwave = new FormWave(this, strSlfName, strWellName, strTrackName, strWaveName);
pwave->setDepthY(m_iY1, m_iY2);
strObjUuid = pwave->m_strObjUuid;
pwave->initGeometry(m_strUuid, m_iScale, nW, m_nObjDrawH);
pwave->m_formTrack = m_formTrack;
pwave->show();
@ -3599,7 +3610,7 @@ void FormDraw::s_addWave(QString strUuid, QString strSlfName, QString strWellNam
double width=2;
QString strScaleType = "";
//道-对象
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strWaveName, strAliasName, strUnit, newlineColor, width, _nSamples, 0, strScaleType, "waveObject");
m_formTrack->Add(strSlfName, m_strWellName, m_strTrackName, strWaveName, strAliasName, strUnit, newlineColor, width, _nSamples, 0, strScaleType, "waveObject", QStringList(), strObjUuid);
}
@ -3802,7 +3813,7 @@ void FormDraw::s_delLine(QString strUuid, QString strWellName, QString strTrackN
}
void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName)
void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString objUuid)
{
//井名&道名不一致
if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName)
@ -3833,7 +3844,22 @@ void FormDraw::s_delWave(QString strUuid, QString strWellName, QString strTrackN
// 打印子控件的信息,使用缩进表示层级关系
//qDebug() << QString("%1").arg(childWidget->objectName());
QString strObjName = childWidget->objectName();
if(strObjName=="QMyCustomPlot")
if (strObjName == "FormWave")
{
FormWave *form = (FormWave*)childWidget;
if (form->m_strObjUuid == objUuid)
{
childWidget->deleteLater(); // 安排控件的删除,稍后执行
m_listLineName.removeOne(strLineName);
//属性清空
PropertyService()->InitCurrentViewInfo();
//取消所有选中单元格
emit CallManage::getInstance()->sig_Raise(m_strUuid, "", "", "", "", 0, "");
}
}
else if(strObjName=="QMyCustomPlot")
{
QMyCustomPlot *form = (QMyCustomPlot*)childWidget;
if(form->m_strLineName == strLineName)

View File

@ -308,7 +308,7 @@ public slots:
//
void s_addWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString objUuid);
//
void s_addTableLine(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);

View File

@ -3185,7 +3185,7 @@ void FormInfo::onShowWave()
void FormInfo::onDeleteWave()
{
//删除Wave
emit CallManage::getInstance()->sig_delWave(m_strUuid, m_strWellName, m_strTrackName, m_strLineName);
emit CallManage::getInstance()->sig_delWave(m_strUuid, m_strWellName, m_strTrackName, m_strLineName, m_strObjUuid);
//重新设置滚动条范围
emit CallManage::getInstance()->sig_setRangeVScrollBar2(m_strUuid);
}

View File

@ -69,10 +69,10 @@ FormTrack::FormTrack(QWidget *parent, QString strSlfName, QString strWellName, Q
this, SLOT(s_delTableLine(QString, QString, QString, QString)));
//波列
connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString)),
this, SLOT(s_delWave(QString, QString, QString, QString)));
connect(this, SIGNAL(sig_AddWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QString)),
this, SLOT(s_addWave(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString, QString)));
connect(CallManage::getInstance(), SIGNAL(sig_delWave(QString, QString, QString, QString, QString)),
this, SLOT(s_delWave(QString, QString, QString, QString, QString)));
// 深度
connect(this, SIGNAL(sig_AddDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)),
this, SLOT(s_addDepth(QString, QString, QString, QString, QString, QString, QColor, double, float, float, QString)));
@ -280,7 +280,7 @@ void FormTrack::Add(QString strSlfName, QString strWellName, QString strTrackNam
}
else if(strType=="waveObject")
{
emit sig_AddWave(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType);
emit sig_AddWave(strSlfName, strWellName, m_strTrackName, strLineName, strAliasName, strUnit, lineColor, dWidth, vmax, vmin, strScaleType, strObjUuid);
}
else if(strType=="tableObject")
{
@ -651,7 +651,7 @@ void FormTrack::s_delTableLine(QString strUuid, QString strWellName, QString str
}
}
void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType)
void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid)
{
qDebug() << "FormTrack s_addWave";
@ -666,6 +666,7 @@ void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTr
//波列信息栏
FormInfo *formInfo = new FormInfo(this, strSlfName, strWellName, strTrackName, strLineName, lineColor);
formInfo->m_strUuid = m_strUuid;
formInfo->m_strObjUuid = strObjUuid;
formInfo->m_strAliasName = strAliasName;
formInfo->m_strUnit = strUnit;
formInfo->m_strScaleType = strScaleType;
@ -692,7 +693,7 @@ void FormTrack::s_addWave(QString strSlfName, QString strWellName, QString strTr
emit CallManage::getInstance()->sig_setRangeVScrollBar2(m_strUuid);
}
void FormTrack::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName)
void FormTrack::s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid)
{
//井名&道名不一致
if(strUuid == m_strUuid && m_strWellName == strWellName && m_strTrackName == strTrackName)

View File

@ -71,7 +71,7 @@ public:
signals:
void sig_AddLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid = "");
void sig_AddWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void sig_AddWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid);
void sig_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid="");
void sig_AddDepth(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
@ -93,8 +93,8 @@ public slots:
void s_addLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid="");
void s_delLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);
void s_addWave(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QString strObjUuid);
void s_delWave(QString strUuid, QString strWellName, QString strTrackName, QString strLineName, QString strObjUuid);
void s_AddTableLine(QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, QString strAliasName, QString strUnit, QColor lineColor, double dWidth, float vmax, float vmin, QString strScaleType, QStringList listOtherProperty={}, QString strObjUuid="");
void s_delTableLine(QString strUuid, QString strWellName, QString strTrackName, QString strLineName);

View File

@ -19,7 +19,7 @@ FormWave::FormWave(QWidget *parent, QString strSlfName, QString strWellName, QSt
m_strWellName = strWellName;
m_strTrackName = strTrackName;
m_strLineName = strLineName;
m_strObjUuid = getUUid();
QString path = GetConfPath() + "selfcolorrank.ini";
FILE*fp = fopen(path.toStdString().c_str(), "rt");
if (fp)

View File

@ -58,7 +58,7 @@ public:
QString m_strWellName;
QString m_strTrackName;
QString m_strLineName;
QString m_strObjUuid = "";
QWidget *m_parent;
FormTrack *m_formTrack = NULL;

View File

@ -690,6 +690,7 @@ void MainWindowCurve::initMainToolBar()
ui->mainToolBar->addAction(m_SaveAsPdfAc); //导出PDF
ui->mainToolBar->addAction(m_SaveAsSvgAc); //导出SVG
ui->mainToolBar->addSeparator();
ui->mainToolBar->addAction(m_ModuleOpenAc); //处理方法
ui->mainToolBar->addAction(m_blackAc); //黑白图
ui->mainToolBar->addAction(m_doubleHeadAc); //单曲线头
ui->mainToolBar->addAction(m_executeDepthShiftAc); //校深
@ -700,7 +701,7 @@ void MainWindowCurve::initMainToolBar()
ui->mainToolBar->addSeparator();
//
ui->mainToolBar->addAction(m_wellTopAlignAc); //井顶对齐
ui->mainToolBar->addAction(m_ModuleOpenAc); //处理方法
// 设置为可选中
m_fixwellsectionHeaderAc->setCheckable(true); //锁头
@ -4942,7 +4943,7 @@ void MainWindowCurve::s_NewMCals()
return;
//新建井+道+曲线(首条)
NewWellAndTrack(sret.at(0), sret.at(1), "FCA2", "MCalsObject");
NewWellAndTrack(sret.at(0), sret.at(1), "WTDD", "MCalsObject");
}
//套管组件

View File

@ -600,7 +600,7 @@ void PreQTableWidget::performDrag()
else if(strType=="waveObject")
{
//删除波列
emit CallManage::getInstance()->sig_delWave(m_strUuid, formInfo->m_strWellName, formInfo->m_strTrackName, formInfo->m_strLineName);
emit CallManage::getInstance()->sig_delWave(m_strUuid, formInfo->m_strWellName, formInfo->m_strTrackName, formInfo->m_strLineName, formInfo->m_strObjUuid);
}
else if(strType=="tableObject")
{

View File

@ -1165,12 +1165,12 @@ void QMyCustomPlot::contextMenuEvent(QContextMenuEvent *event)
QMenu menu(this);
if (!m_bEditor)
{
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "开始编辑岩心图片", this, &QMyCustomPlot::onOpenEditResult);
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "开始编辑岩心图片", this, &QMyCustomPlot::onOpenEditImage);
}
else
{
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "增加", this, &QMyCustomPlot::onEditImage);
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "关闭编辑岩心图片", this, &QMyCustomPlot::onCloseEditResult);
menu.addAction(QIcon(::GetImagePath() + "curve.png"), "关闭编辑岩心图片", this, &QMyCustomPlot::onCloseEditImage);
menu.addAction(QIcon(::GetImagePath() + "icon/CopyCoreTxt.png"), "从剪切板文本数据粘贴", this, &QMyCustomPlot::addItemsImage);
menu.addAction(QIcon(::GetImagePath() + "icon/Delete.png"), "全部清空", this, &QMyCustomPlot::clearItemsImage);
menu.addAction(QIcon(::GetImagePath() + "icon/ClearSelectCore.png"), "设置深度移动量", this, &QMyCustomPlot::setImageDepth);
@ -4427,6 +4427,26 @@ void QMyCustomPlot::MegResult_Gujing()
RefreshItems_Gujing();
}
void QMyCustomPlot::onOpenEditImage()
{
m_bEditor = true;
this->selectionRect()->setPen(Qt::NoPen);
this->setInteractions(QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables | QCP::iMultiSelect); // 轴、图例、图表可以被选择,并且是多选的方式
this->setSelectionRectMode(QCP::srmSelect); // 鼠标框选
onEditImage();
}
void QMyCustomPlot::onCloseEditImage()
{
ClearSelectItems();
m_bEditor = false;
//取消框选
this->setInteractions(QCP::iSelectLegend | QCP::iSelectPlottables);
this->setSelectionRectMode(QCP::srmNone);
this->setCursor(Qt::ArrowCursor);
}
//加载固井slf数据
bool QMyCustomPlot::LoadFromSLF_Gujing(QString strSlfName, QString strLineName)
{
@ -8866,8 +8886,6 @@ void QMyCustomPlot::onOpenEditResult()
this->selectionRect()->setPen(Qt::NoPen);
this->setInteractions(QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables | QCP::iMultiSelect); // 轴、图例、图表可以被选择,并且是多选的方式
this->setSelectionRectMode(QCP::srmSelect); // 鼠标框选
onEditImage();
}
void QMyCustomPlot::onCloseEditResult()

View File

@ -548,6 +548,8 @@ public slots:
void MegResult_Gujing(); //合并结论
//右键--编辑岩心照片
void onOpenEditImage();
void onCloseEditImage();
void onEditImage();
void addItemsImage(); //从剪切板文本数据粘贴
void clearItemsImage(); //全部清空