左侧树图,拖拽井次,使用json模板生成多井。

This commit is contained in:
jiayulong 2026-06-02 21:55:06 +08:00
parent b195449efb
commit 99c19344b5
8 changed files with 151 additions and 11 deletions

View File

@ -106,6 +106,9 @@ signals:
//LogMud
void sig_AddLogMud(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strLineName, int nW = 0);
//拖拽井次,生成多井
void sig_AddMultiWell(QString strUuid, QString strSlfName, QString strWellName);
//新建波列
void sig_AddWave(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, QString strWaveName);
//删除波列

View File

@ -7484,8 +7484,19 @@ void FormDraw::dropEvent(QDropEvent* event)
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
if(strType=="wellItem")//井次名称对应多井,统一处理
{
//拖拽井次,生成多井
emit CallManage::getInstance()->sig_AddMultiWell(m_strUuid, strSlfName, strWellName);
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
event->accept();
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
}
}
}
else

View File

@ -2508,8 +2508,19 @@ void FormInfo::dropEvent(QDropEvent* event)
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
if(strType=="wellItem")//井次名称对应多井,统一处理
{
//拖拽井次,生成多井
emit CallManage::getInstance()->sig_AddMultiWell(m_strUuid, strSlfName, strWellName);
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
event->accept();
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
}
}
}
else

View File

@ -271,8 +271,19 @@ void FormTrackTop::dropEvent(QDropEvent* event)
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
if(strType=="wellItem")//井次名称对应多井,统一处理
{
//拖拽井次,生成多井
emit CallManage::getInstance()->sig_AddMultiWell(m_strUuid, strSlfName, strWellName);
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
event->accept();
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
}
}
}
else

View File

@ -188,6 +188,8 @@ MainWindowCurve::MainWindowCurve(QWidget *parent) :
//重新设置滚动条范围(头)
connect(CallManage::getInstance(), SIGNAL(sig_setRangeVScrollBar2(QString)), this, SLOT(s_setRangeVScrollBar2(QString)));
connect(CallManage::getInstance(), SIGNAL(sig_AddMultiWell(QString, QString, QString)), this, SLOT(s_AddMultiWell(QString, QString, QString)));
//图头----------
m_dock1=new QDockWidget(tr(""),this);
m_dock1->setFeatures(QDockWidget::NoDockWidgetFeatures);//QDockWidget::DockWidgetMovable
@ -5271,6 +5273,11 @@ void MainWindowCurve::dropEvent(QDropEvent* event)
//新建井+道+曲线(首条)
NewWellAndTrack(strWellName, strSlfName, strLineName, strType);
}
else if(strType=="wellItem")//井次名称对应多井,统一处理
{
//拖拽井次,生成多井
emit CallManage::getInstance()->sig_AddMultiWell(m_strUuid, strSlfName, strWellName);
}
}
//QMessageBox::information(this, "提示", strExtern);
@ -5421,6 +5428,62 @@ void MainWindowCurve::Open(QString fileFull)
}
}
void MainWindowCurve::OpenMultiWell(QString fileFull)
{
QString strPrjname = "";
QJsonArray wellsArray;
QJsonParseError jsonError;
// 文件
QFile file(fileFull);
if(file.open(QIODevice::ReadOnly))
{
// 解析JSON
QJsonDocument document = QJsonDocument::fromJson(file.readAll(), &jsonError);
if (!document.isNull() && (jsonError.error == QJsonParseError::NoError))
{
if (document.isObject())
{
QJsonObject object = document.object();
//
if (object.contains("wells"))
{
QJsonValue value = object.value("wells");
if (value.isArray()) {
wellsArray = value.toArray();
qDebug() << "wellsArray number:" << QString::number(wellsArray.size());
//是否正在加载json
g_iLoadingJson = 1;
//展示所有井
DisplayWells(wellsArray);
g_iLoadingJson = 0;
//统一处理头部滚动条
s_setRangeVScrollBar2(m_strUuid);
}
}
}
}
//
file.close();
qDebug() << "JSON 模板文件读取成功!";
//重置右侧滚动条
// ui->verticalScrollBar->setRange(-m_iY2*100, -m_iY1*100);
// ui->verticalScrollBar->setValue(-m_iY2*100);
vertScrollBarChanged(-m_iY2*100);
QMessageBox::information(NULL,"提示","模板加载完成!",QMessageBox::Ok);
emit sig_resizeWindow();
} else {
qWarning() << "JSON 模板文件打开失败:" << file.errorString();
QMessageBox::information(NULL,"提示","模板加载失败!",QMessageBox::Ok);
}
}
//改变道宽
void MainWindowCurve::s_changeWidth(QString strUuid, QString strSlfName, QString strWellName, QString strTrackName, int iCurrentCol, int iNewWidth)
{
@ -6610,3 +6673,24 @@ void MainWindowCurve::onSectionResized(int logicalIndex, int oldSize, int newSiz
//居中
emit sig_resizeWindow();
}
//拖拽井次,生成多井
void MainWindowCurve::s_AddMultiWell(QString strUuid, QString strSlfName, QString strWellName)
{
if(strUuid != m_strUuid)
{
return;
}
if(m_fileJson=="")
{
return;
}
g_strSlfName = strSlfName;
g_strWellName = strWellName;
//多井的打开工程使用模板的井名和slf名
m_bMultiProject = false;
//
OpenMultiWell(m_fileJson);
}

View File

@ -142,7 +142,8 @@ public:
void DisplayTrack_Top(int id, QJsonObject trackTop, QJsonObject trackInfo);
void Open(QString fileFull);//打开
QString m_fileJson;
void OpenMultiWell(QString fileFull);//打开
QString m_fileJson="";
bool m_bMultiProject = false; //多井的打开工程使用模板的井名和slf名
public:
@ -233,6 +234,9 @@ public slots:
//列宽改变
void onSectionResized(int logicalIndex, int oldSize, int newSize);
//拖拽井次,生成多井
void s_AddMultiWell(QString strUuid, QString strSlfName, QString strWellName);
public:
QAction* m_selectWellAc = nullptr; //选择井
QAction* m_fixwellsectionHeaderAc = nullptr; //锁头

View File

@ -377,8 +377,19 @@ void PreQTableWidget::dropEvent(QDropEvent *event)
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
if(strType=="wellItem")//井次名称对应多井,统一处理
{
//拖拽井次,生成多井
emit CallManage::getInstance()->sig_AddMultiWell(m_strUuid, strSlfName, strWellName);
// 接受拖拽事件
event->setDropAction(Qt::MoveAction);
event->accept();
}
else
{
// 如果井名不正确,不接受拖拽事件
event->ignore();
}
}
}
}

View File

@ -145,11 +145,16 @@ void QMyTreeWidget::startDrag(Qt::DropActions supportedActions)
{
//根节点(项目名称)
}
else if (strTreeTag == "curveObject" || strTreeTag == "waveObject" || strTreeTag == "tableObject"){
else if (strTreeTag == "curveObject" || strTreeTag == "waveObject" || strTreeTag == "tableObject" ||
strTreeTag == "wellItem")//井次名称对应多井,统一处理
{
//曲线
QString strSlfName = item->data(0, Qt::UserRole+1).toString();
QString strWellName = item->data(0, Qt::UserRole+2).toString();
if (strTreeTag == "wellItem")//井次名称
{
strWellName = item->text(0);
}
//曲线对象(AC、BS...)
QMimeData *mimeData = new QMimeData;
// 这里需要根据你的item数据来设置mimeData例如