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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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; //当前的测试类型,涉及序列化
};