#pragma once #include "iSubWndBaseAF.h" class ZxDataGaugeBase; class ZxDataObject; class iGuiPlotInf; class ZxObjBase; class ZxObjPoint; class ZxObjInfPoint; class iWxRateInsert; class iWxOptionSmooth; class iWxOptionThinning; class iWxPointSelPreview; class iWxSwapPF; class iSubWndBaseFit; class iSubWndAnal; class iWxInfDataPF; class iDockBaseWx; class iWxModelParameterUpDown; class M_SUB_WND_EXPORT iSubWndInterfere : public iSubWndBaseAF { Q_OBJECT public: explicit iSubWndInterfere(QWidget *parent = 0, QString sExt = ""); ~iSubWndInterfere(); // 配置窗体 virtual void configWnd(QString sPrevInfo); virtual void loadData(QString sWell = ""); //加载数据 virtual void runUpdate(); //刷新 // 序列化 virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); virtual void onDeserialized(); // 保存加载 virtual bool loadRsts(); virtual bool saveRsts(); // 图件相关 virtual bool saveRstPlotInfos(ZxRstWnd* pRstWnd); virtual bool loadRstPlotInfos(ZxRstWnd* pRstWnd); public: // 外部调用 bool getInfInfos(QVector& vecInfs); void bindSubWndAnal(iSubWndAnal* p); void freshAllInfPts(); // 当井相关的内容更改时进行相关的处理,比如更新一下井位图 virtual void dealwithWellChange(ZxDataWell* pDataWell, TreeNodeCmd o); signals: protected: // 初始化UI virtual QWidget* initUiMainWx(); virtual void initUiDockWxs(); virtual void initUiDockWxs_Chart(); virtual void initUiDockWxs_Table(); // 执行命令:通常来自图形右侧/左侧的工具栏 virtual bool runActionOf(QString sAction); // 刷新 void updatePlots(); // 重新调整工具栏 virtual void reAdjustToolbar(QToolBar*); // 点击一个InfPt,刷新右侧窗体 void freshRightWxsByObj(ZxObjBase* p, bool bPtsOnly); void freshRstChartByObj(ZxObjBase* p, bool bPtsOnly); public slots: // Obj选择状态改变 void slotInfObjSelChanged(ZxObjBase*, bool); // Obj数据发生了改变 void slotInfObjPtsChanged(ZxObjBase*); // 获取当前中心井的压力和流量 void slotGetCentralDataPF(QVector& vecP, QVector& vecF); // 当前窗体所有信息的保存,比如关闭时提问的保存 virtual bool slotSaveAll(); // 井位图上右键按钮响应(需要自动获取当前选中的井点信息) //void slotEditWellData(ZxDataWell* pDataWell, bool bEditable); // 响应Well1Map2D 触发新建井 void slotCreateNewWellBy(VecPointF& vecInfPts, int nType, ZxDataWell*& pDataWell); // 响应Well1Map2D 右键等Action void slotRunInfAction(ZxDataWell* pDataWell, QString sAction, bool& bOK); // 数据加载信号相应 virtual void slotPfObjSaved(ZxDataGaugeBase* p); private: // 把流量数据应用于流动段,注意,此时,井已经缓存 void utilizeInfDataF(ZxDataGaugeBase* p); private: // 绘图相关 iGuiPlotInf* m_pWxPlotInf; // 关联的m_pAnalWnd,序列化需要特殊考虑 iSubWndAnal/*Seg*/* m_pAnalWnd; iDockBaseWx* m_pWxDockRstChart; //模型参数 iGuiPlot* m_pWxRstPlot; iDockBaseWx* m_pWxDockDataF; iDockBaseWx* m_pWxDockDataP; iWxInfDataPF* m_pWxDataF; //流量数据 iWxInfDataPF* m_pWxDataP; bool m_bUtilizeNeeded; //临时变量 };