You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/Include/mTool/mToolPvt/iWxBase.h

157 lines
5.4 KiB
C

#pragma once
#include "mModuleDefines.h"
#include "iDlgBase.h"
#include "iResultInfo.h"
#include "mToolPvt_global.h"
class iParaItemCtrl;
class ZxDataWell;
class ZxDataObject;
class M_TOOL_PVT_EXPORT iWxBase : public iDlgBase
{
Q_OBJECT
public:
explicit iWxBase(QWidget *parent = 0);
~iWxBase();
public:
// 根据测试类型更改UI(比如多层、干扰等)
virtual void adjustUiByTestType(PvtTestType ptt);
// 初始化
virtual void initUI();
virtual void setDataWell(ZxDataWell* p);
virtual QVector<iParaItemCtrl*>* getVecParaCtrls();
// 组织结果数据,注vec不进行clear由调用方自行clear
virtual bool organizeResults(QVector<iResultInfo>& vec, QString sType);
virtual bool organizeResultsEx(QStringList& listTags,
QStringList& listValues,
QString sType,
bool bClear = false);
// 与序列化关联
virtual bool saveAsByteArr(QByteArray& v);
virtual bool loadFromByteArr(QByteArray& v);
// 新增接口(与一个数据对象体进行绑定式关联)
virtual bool saveAsDataObj(ZxDataObject*& pDataObj);
virtual bool loadFromDataObj(ZxDataObject*& pDataObj);
int getAwi() { return m_nAwi; }
virtual QString getAwiName() { return ""; }
public:
virtual void onSerialize(ZxSerializer* ser);
virtual void onDeserialize(ZxSerializer* ser);
// 建立某参数的Layout考虑单位控件
virtual iParaItemCtrl* createParaCtrl(QString sPara,
bool bUnitEditable = true,
bool bShowScale = false,
bool bStrench = true,
VecInt* pVecStrenchRatios = nullptr,
int nSpacing = 4,
int nMarginL = 20,
int nMarginR = 20);
// 在pCtrl InitUI之前允许部分调整如参数跟着模型走的调整
//virtual void adjustParaInfos(iParameter* pParameter);
// 从各个Wxm_vecWxDatas中遍历查找
virtual bool setParaValue(QString sPara, double d);
virtual bool getParaValue(QString sPara, double& d);
// 返回所有参数Key为英文ID
virtual bool getAllParaValues(QMap<QString, double>& map,
bool bOnlyFitted = false,
bool bClearMap = true);
virtual bool getAllParaValuesUnit(QMap<QString, QString>& map,
bool bOnlyFitted = false,
bool bClearMap = true);
// 在导航模式下,点击下一步时,先判断本步是否正确
//virtual bool verifyCurInfos(QString& sLog) { return true; }
// 在导航模式下,点击下一步时,先判断本步是否正确
virtual bool checkCurWxInputs() { return true; }
// 在每次设定时,从上一步获取数值,并且刷新至本窗体
virtual bool getAndFreshByPrevWx() { return true; }
signals:
// 当参数改变时触发,通知后续窗体
void sigParasChanged(QMap<QString, QVariant>& map);
// 返回Anal标识
void sigGetAnalTag(QString& s);
// 返回指定Key的数值方便逐级传递
void sigPrevWxValueOf(QStringList& listParas, QMap<QString, QVariant>& map);
// 触发存储/加载
void sigSaveToFile(int nAWI);
void sigLoadFromFile(int nAWI);
void sigHelp(int nAWI);
public slots:
virtual void slotGetAnalTag(QString& s) { Q_UNUSED(s); }
// 当前面窗体参数改变时,本窗体响应
virtual void slotParasObtained(QMap<QString, QVariant>& map);
// 响应ParaCtrl数据的改变
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
// 与sigPrevWxValueOf对应
virtual void slotValueToNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
protected:
virtual void paintEvent(QPaintEvent *);
// 绘制Log
virtual void drawLogInfo(QPainter* painter);
// 从当前井获取该参数的数值
bool getValueFromCurWell(QString sPara, QVariant& o);
public:
/// @brief 根据PvtFluidType判断是否单相
/// @param nPft 是各种相态的组合
static bool isSinglePhase(int nPft);
/// @brief 根据PvtFluidType解析出来都有哪些相单相
/// @param nPft 是各种相态的组合
static VecInt parsePhaseTypes(int nPft);
void parseMapValue2Tbx(QMap<QString, QVariant>& map, QString sPara, \
QLineEdit* pTbx, QComboBox* pCbxBinding, \
bool bNumber = true, \
bool bIgnoreIfNotNull = true);
void cacheTbxValue2Map(QMap<QString, QVariant>& map, QString sPara, \
QLineEdit* pTbx, QComboBox* pCbxBinding, \
bool bNumber = true, \
bool bIgnoreIfNull = true);
protected:
// 对于单位类的控件进行管理
QVector<iParaItemCtrl*> m_vecParaCtrls;
// 当前井
ZxDataWell* m_pDataWell;
// 默认的存储路径,外部传递过来
//QString m_sAnalTag;
int m_nAwi; //对于向导子窗体设定的类型不涉及序列化只读为了方便引用采用了int类型实际是枚举
PvtTestType m_oPtt; //当前的测试类型,涉及序列化
};