#pragma once #include "iWxBase.h" #include "mGuiAnal_global.h" namespace Ui { class iWxPfModel; } class iGuiPlot; class ZxTableView; class ZxTableModel; class iCurveDesc; class iDefineChart; class iDefineChartCurve; class M_GUI_ANAL_EXPORT iWxPfModel : public iWxBase { Q_OBJECT public: explicit iWxPfModel(QString sPfModelName, QWidget *parent = 0); ~iWxPfModel(); // 初始化 virtual void initUI(); // 文件标识 virtual QString getFilePfTag(); // 是否向导模式 void setWizardMode(bool b); protected: // 初始化 virtual void initUI_Tops(); virtual void initUI_ChartAndTable(); virtual QWidget* initUI_Chart(bool bRaw); virtual QWidget* initUI_TableView(); /// @brief 表格数据改变,与图形相关内容(总的触发接口) virtual void freshChartByTableChange(); /// @brief 由表格数据转换为绘制x-y曲线图的数据 /// @note 通常对y进行调整,组织形式仍然是表格 getData 返回的形式 virtual bool adjustDataByModel(VVecVariant& vvec); /// @brief 调整后的数据进行绘图/拟合等相关操作 /// @param vvecRaw表格中原始数据 /// @param vvecProcessed为调整后数据,组织形式仍然是表格 getData 返回的形式 virtual void refreshChart(const VVecVariant& vvecRaw, const VVecVariant& vvecProcessed); /// @brief 获取对应的曲线定义,一共两条,原始和拟合 /// @param bLeftWxPlot具体画哪幅图,左侧为原始,右侧为拟合 /// @param bFitCurve具体画哪根线,对于左侧图,只有原始,对于右侧图,原始为处理后点,右侧为曲线 iDefineChartCurve* getCurveDefineOf(bool bLeftWxPlot, bool bFitCurve = false); // 曲线基础操作 // 配置曲线 void configCurveDecs(iCurveDesc* pDesc, \ const VecDouble& x, const VecDouble& y, \ iDefineChartCurve* pDC); // 添加曲线 virtual bool addCurveBy(VecDouble& x, VecDouble& y, \ iDefineChartCurve* pDC, \ iGuiPlot* pWxPlot); // 对图形进行最后调整 virtual void _changeCurveAttributes(iGuiPlot* pWxPlot); // 移除指定曲线 virtual void removeCurveOf(iGuiPlot* pWxPlot, QString sName); // 清空 virtual void clearChart(iGuiPlot* pWxPlot); protected: /// @brief 绘图等相关操作(原始的点或者处理后的点) /// @param bLeftWxPlot具体画哪幅图,左侧为原始,右侧为拟合 /// @param vvec表格中原始数据 void _refreshChart_Raw(bool bLeftWxPlot, const VVecVariant& vvec); protected slots: virtual void slotTableCellChanged(const QModelIndex&, const QModelIndex&); virtual void slotTableRowChanged(QModelIndexList listOlds, \ QModelIndexList listNews, QModelIndex index); public: // 序列化 // void saveBkInfos(); // void loadBkInfos(); // QString getBkInfoFile(QString s); // 窗体关闭的情形 virtual void closeEvent(QCloseEvent *); protected: Ui::iWxPfModel *ui; // 针对的方法标识 QString m_sPfModelName; iDefineChart* m_pChartDefineRaw; iDefineChart* m_pChartDefineFit; // 绘图/表格展示 iGuiPlot* m_pWxPlotRaw; iGuiPlot* m_pWxPlotFit; ZxTableView* m_pTableView; ZxTableModel* m_pTableModel; // 是否向导模式 bool m_bWizardMode; };