#include "ZxBaseUtil.h" #include "zxLogInstance.h" #include "ZxPlot.h" #include "iGuiPlot.h" #include "nmObjPointTool.h" #include "nmObjLineTool.h" #include "nmObjPolygonTool.h" #include "nmGuiPlot.h" #include "nmGuiPlotCmdHelper.h" nmGuiPlotCmdHelper::nmGuiPlotCmdHelper(iGuiPlot* p) : iGuiPlotCmdHelper(p) { } nmGuiPlotCmdHelper::~nmGuiPlotCmdHelper() { } bool nmGuiPlotCmdHelper::runAction(QString sAction) { Q_ASSERT (NULL != m_pGuiPlot); ZxPlot* pPlot = m_pGuiPlot->m_pPlot; Q_ASSERT (NULL != pPlot); // 鼠标交互,插入数值试井绘图对象 的例子:点、线、多边形 if (_isSame(sAction, "nmInsertObjPoint")) { nmObjToolBase* pObjTool = new nmObjPointTool(); Q_ASSERT (NULL != pObjTool); pPlot->appendTools(pObjTool); connect(pObjTool, SIGNAL(sigPtsFinished(QVector&)), \ this, SLOT(slotObjPtsFinished(QVector&))); return true; } else if (_isSame(sAction, "nmInsertObjLine")) { nmObjToolBase* pObjTool = new nmObjLineTool(); Q_ASSERT (NULL != pObjTool); pPlot->appendTools(pObjTool); connect(pObjTool, SIGNAL(sigPtsFinished(QVector&)), \ this, SLOT(slotObjPtsFinished(QVector&))); return true; } else if (_isSame(sAction, "nmInsertObjPolygon")) { nmObjToolBase* pObjTool = new nmObjPolygonTool(); Q_ASSERT (NULL != pObjTool); pPlot->appendTools(pObjTool); connect(pObjTool, SIGNAL(sigPtsFinished(QVector&)), \ this, SLOT(slotObjPtsFinished(QVector&))); return true; } else { // 其它Action } return iGuiPlotCmdHelper::runAction(sAction); } void nmGuiPlotCmdHelper::slotObjPtsFinished(QVector& vec) { nmObjToolBase* pTool = dynamic_cast(sender()); if (NULL == pTool) { return; } nmGuiPlot* pWxPlot = dynamic_cast(m_pGuiPlot); if (NULL == pWxPlot) { return; } ZxPlot* pPlot = pWxPlot->m_pPlot; Q_ASSERT (NULL != pPlot); pPlot->removeTools(pTool); //移除Tool QString sName = tr("nmObj"); pWxPlot->appendOneObj(pTool->getNOT(), sName, vec); }