|
|
|
|
@ -1,6 +1,5 @@
|
|
|
|
|
#include "zxLogInstance.h"
|
|
|
|
|
#include "iRibbonXmlCmd.h"
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include <QEvent>
|
|
|
|
|
#include <QMdiArea>
|
|
|
|
|
#include <QMdiSubWindow>
|
|
|
|
|
@ -1083,7 +1082,7 @@ void nmSubWndUtils::slotHandleTabChange(int index)
|
|
|
|
|
|
|
|
|
|
if(nullptr != pMap) {
|
|
|
|
|
// 更新地图相关信息
|
|
|
|
|
pMap->updateMapByDataManager(nmDataAnalyzeManager::getInstanceByFitting(pSubWndF));
|
|
|
|
|
pMap->updateMapByDataManager(pDataManger);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO:网格更新
|
|
|
|
|
@ -1091,8 +1090,8 @@ void nmSubWndUtils::slotHandleTabChange(int index)
|
|
|
|
|
|
|
|
|
|
if(nullptr != pSubWndGrid) {
|
|
|
|
|
// 更新网格
|
|
|
|
|
disconnect(nmDataAnalyzeManager::getInstanceByFitting(pSubWndF), SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()));
|
|
|
|
|
connect(nmDataAnalyzeManager::getInstanceByFitting(pSubWndF), SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()), Qt::QueuedConnection);
|
|
|
|
|
disconnect(pDataManger, SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()));
|
|
|
|
|
connect(pDataManger, SIGNAL(dataChanged()), pSubWndGrid, SLOT(updateGrid()), Qt::QueuedConnection);
|
|
|
|
|
// 手动更新
|
|
|
|
|
pSubWndGrid->updateGrid();
|
|
|
|
|
}
|
|
|
|
|
@ -1184,12 +1183,40 @@ void nmSubWndUtils::detachFittingPlot(iSubWndFitting* pSubWndF)
|
|
|
|
|
if(nmDataAnalyzeManager::getCurrentFitting() != pSubWndF) {
|
|
|
|
|
nmDataAnalyzeManager* pCurManager = nmDataAnalyzeManager::getCurrentInstance();
|
|
|
|
|
if(pCurManager != nullptr) {
|
|
|
|
|
// 关闭的不是当前分析时,清掉待关闭分析图元后恢复当前分析的Map显示。
|
|
|
|
|
pCurManager->setPlot(pPlot);
|
|
|
|
|
pPlot->setPlotsByDataManger(pCurManager);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 外层成果窗口关闭时,先清理仍绑定到Map上的图元
|
|
|
|
|
void nmSubWndUtils::detachMdiFittingPlots(ZxMdiSubWindow* pMdiChild)
|
|
|
|
|
{
|
|
|
|
|
if(pMdiChild == nullptr || m_pMainWnd == nullptr) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ZxTabWidget* pTabWx = m_pMainWnd->getTabWxOf(pMdiChild);
|
|
|
|
|
if(pTabWx == nullptr) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVector<iSubWnd*> vecSubWnds = m_pMainWnd->getAllSubWndsOf(pTabWx, "3004", true);
|
|
|
|
|
// 同一个成果内可能有多个分析,只清理仍占用Map Plot的DataManager。
|
|
|
|
|
foreach(iSubWnd* pSubWnd, vecSubWnds) {
|
|
|
|
|
iSubWndFitting* pSubWndF = dynamic_cast<iSubWndFitting*>(pSubWnd);
|
|
|
|
|
nmDataAnalyzeManager* pDataManager = nmDataAnalyzeManager::findManagerByFitting(pSubWndF);
|
|
|
|
|
if(pDataManager == nullptr || pDataManager->getPlot() == nullptr) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
nmGuiPlot* pPlot = pDataManager->getPlot();
|
|
|
|
|
pPlot->deleteAllPlotObjs();
|
|
|
|
|
pDataManager->setPlot(nullptr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 流动段分析窗口销毁后,释放对应的数据管理器
|
|
|
|
|
void nmSubWndUtils::slotHandleFittingDestroyed(QObject* pObject)
|
|
|
|
|
{
|
|
|
|
|
@ -1203,6 +1230,13 @@ void nmSubWndUtils::slotHandleMdiClosing(bool& bAllowClose)
|
|
|
|
|
{
|
|
|
|
|
if(!bAllowClose) {
|
|
|
|
|
m_closingMdiChildren.remove(sender());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 用户确认关闭成果窗口后再清理Map,避免取消关闭时误清当前显示。
|
|
|
|
|
ZxMdiSubWindow* pMdiChild = qobject_cast<ZxMdiSubWindow*>(sender());
|
|
|
|
|
if(pMdiChild != nullptr) {
|
|
|
|
|
detachMdiFittingPlots(pMdiChild);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|