From 35ec07bb2556db420fed4c5e0993c6d4e4b6ba64 Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Wed, 2 Sep 2026 14:25:36 +0800 Subject: [PATCH] =?UTF-8?q?fix(nmNum):=20=E4=BF=AE=E5=A4=8D=E5=A4=9A?= =?UTF-8?q?=E5=88=86=E6=9E=90=E4=BF=9D=E5=AD=98=E5=8F=8A=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 保存和关闭成果时遍历全部数值分析窗口 - 切换分析时激活对应数值面板并刷新结果井 --- Src/nmNum/nmSubWnd/nmSubWndUtils.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp index 70f70dd..c10db5b 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp @@ -905,7 +905,7 @@ bool nmSubWndUtils::saveRsts(iSubWnd* pSubWnd, \ // 外层框架仍按 develop 的方式逐窗口回调。数值代次必须以实际分析窗口 // 作为保存锚点,不能让先到达的 Map 或网格回调改变成果井和根目录。 QVector vecSubWnds = pMainWnd1->getAllSubWndsOf( - pTabWx, "3004", true); + pTabWx, "3004", false); iSubWnd* pSessionAnchor = vecSubWnds.isEmpty() ? pSubWnd : vecSubWnds.first(); ZxDataWell* pDataWell = pSessionAnchor == nullptr @@ -1316,6 +1316,17 @@ void nmSubWndUtils::slotHandleTabChange(int index) } } } + + if(pDataManger != nullptr) { + // 切换分析后必须同步活动数值面板。即使DataManager已经是当前对象, + // 结果井下拉框也可能仍指向后创建的另一个分析面板。 + iDockBaseWx* pWxDockNm1 = pSubWndF->getNmDockWx(0); + nmWxNumericalDesign* pAnalWx = pWxDockNm1 == nullptr + ? nullptr : dynamic_cast(pWxDockNm1->widget()); + if(pAnalWx != nullptr) { + pAnalWx->activateCurrentInstance(); + } + } } } } @@ -1421,7 +1432,7 @@ void nmSubWndUtils::detachMdiFittingPlots(ZxMdiSubWindow* pMdiChild) return; } - QVector vecSubWnds = m_pMainWnd->getAllSubWndsOf(pTabWx, "3004", true); + QVector vecSubWnds = m_pMainWnd->getAllSubWndsOf(pTabWx, "3004", false); // 同一个成果内可能有多个分析,只清理仍占用Map Plot的DataManager。 foreach(iSubWnd* pSubWnd, vecSubWnds) { iSubWndFitting* pSubWndF = dynamic_cast(pSubWnd);