feat:新增 nmGridRowUtils:继承 iGridRowUtils 的适配层子类,隔离基类接口变更

feature/nm-para-property-20260615
lh 3 weeks ago
parent d66d0e67b4
commit 9e284ab25c

@ -0,0 +1,154 @@
#pragma once
#include "nmGUI_global.h"
#include "iGridRowUtils.h"
/// @brief NM模块专用的参数区渲染工具类继承自 iGridRowUtils
/// @note 设立此子类的主要目的是作为 NM 模块与基类之间的适配层:
/// - 隔离基类接口变更对 NM 模块的影响,基类改动只需修改本文件
/// - NM 模块后续如需定制参数区行为(如特殊的参数联动、自定义渲染等),
/// 只需在此类中 override 相应虚函数,无需触碰基类代码
/// - 当前实现以直接转发基类接口为主,按需逐步扩展
class NM_GUI_EXPORT nmGridRowUtils : public iGridRowUtils
{
Q_OBJECT
public:
/// @brief 构造函数,接口与基类保持一致
/// @param bSimple 是否为简单模式(不涉及序列化),默认 false
/// @param parent 父窗口
explicit nmGridRowUtils(bool bSimple = false, QWidget* parent = nullptr);
~nmGridRowUtils();
// ================================================================
// 初始化与构建
// ================================================================
/// @brief 初始化界面,基类实现负责创建基础布局
virtual void initUI() override;
/// @brief 根据参数列表构建参数区
/// @param listParas 参数英文名列表
/// @param bDnMode 是否为设计模式
/// @param pWxDlg 参数对话框载体
virtual bool buildRowUtils(QStringList listParas,
bool bDnMode,
QWidget* pWxDlg) override;
// ================================================================
// 参数读写
// ================================================================
/// @brief 设置指定参数的值
/// @param sPara 参数名称(英文标识)
/// @param o 参数值
virtual bool setParaValue(QString sPara, QVariant o) override;
/// @brief 获取指定参数的值
/// @param sPara 参数名称(英文标识)
/// @param o 输出的参数值
virtual bool getParaValue(QString sPara, QVariant& o) override;
/// @brief 批量获取所有参数值
/// @param map 输出结果Key为英文ID
/// @param bOnlyFitted 是否仅获取参与拟合的参数
/// @param bClearMap 是否先清空map
virtual bool getAllParaValues(QMap<QString, QVariant>& map,
bool bOnlyFitted = false,
bool bClearMap = true) override;
/// @brief 批量获取所有参数单位
/// @param map 输出结果Key为英文ID
/// @param bOnlyFitted 是否仅获取参与拟合的参数
/// @param bClearMap 是否先清空map
virtual bool getAllParaUnits(QMap<QString, QString>& map,
bool bOnlyFitted = false,
bool bClearMap = true) override;
// ================================================================
// 参数项查找
// ================================================================
/// @brief 根据参数名获取对应的行项目
/// @param sPara 参数名称
virtual iGridRowItem* getItemByPara(QString sPara) override;
/// @brief 根据参数名获取对应的值
/// @param sPara 参数名称
virtual QVariant getItemValueByPara(QString sPara) override;
// ================================================================
// 参数来源标识
// ================================================================
/// @brief 设置参数来源标识对应XML加载时的sKey
/// @param s 来源标识,如 "WDT" 等
void setParaSrcTag(QString s);
// ================================================================
// 序列化
// ================================================================
/// @brief 序列化(保存)
virtual void onSerialize(ZxSerializer* ser) override;
/// @brief 反序列化(加载)
virtual void onDeserialize(ZxSerializer* ser) override;
// ================================================================
// 结果组织
// ================================================================
/// @brief 组织结果数据,用于将参数区的值整理为结果信息
/// @param vec 输出结果列表(不清空,由调用方负责)
/// @param sType 结果类型
/// @param bMultiPhase 是否多相
virtual bool organizeResults(QVector<iResultInfo>& vec,
QString sType,
bool bMultiPhase) override;
protected:
// ================================================================
// 内部构建
// ================================================================
/// @brief 内部构建实现,递归创建参数项
/// @param listParas 参数列表
/// @param pItemParent 父级行项目
/// @param bDnMode 是否为设计模式
/// @param bProperOrder 是否保持正确顺序
virtual bool _buildRowUtils(QStringList listParas,
iGridRowItem* pItemParent,
bool bDnMode,
bool bProperOrder = true) override;
/// @brief 创建并添加一个参数项
/// @param pParent 父级行项目
/// @param p 参数对象
/// @param sPara 参数名称
virtual bool createAndAddItem(iGridRowItem* pParent,
iParameter* p,
QString sPara) override;
/// @brief 连接参数项的信号槽
/// @param p 需要连接的参数项
virtual void connectSignalsOf(iGridRowItem* p) override;
/// @brief 参数项创建完成后的绑定处理(如产液段与有效长度的关联)
virtual void bindItems() override;
public slots:
/// @brief 参数值改变前的预览回调
/// @param o1 主要数据m_oRawValue
/// @param o2 辅助数据(如下拉填充内容)
virtual void slotValuePrevChanged(QVariant& o1, QVariant& o2) override;
/// @brief 获取指定参数的当前值(供子项内部查询用)
/// @param sPara 参数名称
/// @param o 输出值
/// @param bOk 是否成功获取
virtual void slotGetValueOf(QString sPara, QVariant& o, bool& bOk) override;
};

@ -0,0 +1,152 @@
#include "nmGridRowUtils.h"
// ================================================================
// 构造与析构
// ================================================================
nmGridRowUtils::nmGridRowUtils(bool bSimple, QWidget* parent)
: iGridRowUtils(bSimple, parent)
{
}
nmGridRowUtils::~nmGridRowUtils()
{
}
// ================================================================
// 初始化与构建
// ================================================================
void nmGridRowUtils::initUI()
{
// 当前直接转发至基类后续可在此添加NM模块特有的初始化逻辑
iGridRowUtils::initUI();
}
bool nmGridRowUtils::buildRowUtils(QStringList listParas,
bool bDnMode,
QWidget* pWxDlg)
{
// 当前直接转发至基类,后续可在此拦截参数列表或做前置/后置处理
return iGridRowUtils::buildRowUtils(listParas, bDnMode, pWxDlg);
}
// ================================================================
// 参数读写
// ================================================================
bool nmGridRowUtils::setParaValue(QString sPara, QVariant o)
{
return iGridRowUtils::setParaValue(sPara, o);
}
bool nmGridRowUtils::getParaValue(QString sPara, QVariant& o)
{
return iGridRowUtils::getParaValue(sPara, o);
}
bool nmGridRowUtils::getAllParaValues(QMap<QString, QVariant>& map,
bool bOnlyFitted,
bool bClearMap)
{
return iGridRowUtils::getAllParaValues(map, bOnlyFitted, bClearMap);
}
bool nmGridRowUtils::getAllParaUnits(QMap<QString, QString>& map,
bool bOnlyFitted,
bool bClearMap)
{
return iGridRowUtils::getAllParaUnits(map, bOnlyFitted, bClearMap);
}
// ================================================================
// 参数项查找
// ================================================================
iGridRowItem* nmGridRowUtils::getItemByPara(QString sPara)
{
return iGridRowUtils::getItemByPara(sPara);
}
QVariant nmGridRowUtils::getItemValueByPara(QString sPara)
{
return iGridRowUtils::getItemValueByPara(sPara);
}
// ================================================================
// 参数来源标识
// ================================================================
void nmGridRowUtils::setParaSrcTag(QString s)
{
// 基类已有实现,直接转发
iGridRowUtils::setParaSrcTag(s);
}
// ================================================================
// 序列化
// ================================================================
void nmGridRowUtils::onSerialize(ZxSerializer* ser)
{
iGridRowUtils::onSerialize(ser);
}
void nmGridRowUtils::onDeserialize(ZxSerializer* ser)
{
iGridRowUtils::onDeserialize(ser);
}
// ================================================================
// 结果组织
// ================================================================
bool nmGridRowUtils::organizeResults(QVector<iResultInfo>& vec,
QString sType,
bool bMultiPhase)
{
return iGridRowUtils::organizeResults(vec, sType, bMultiPhase);
}
// ================================================================
// 内部构建protected
// ================================================================
bool nmGridRowUtils::_buildRowUtils(QStringList listParas,
iGridRowItem* pItemParent,
bool bDnMode,
bool bProperOrder)
{
return iGridRowUtils::_buildRowUtils(listParas, pItemParent, bDnMode, bProperOrder);
}
bool nmGridRowUtils::createAndAddItem(iGridRowItem* pParent,
iParameter* p,
QString sPara)
{
return iGridRowUtils::createAndAddItem(pParent, p, sPara);
}
void nmGridRowUtils::connectSignalsOf(iGridRowItem* p)
{
iGridRowUtils::connectSignalsOf(p);
}
void nmGridRowUtils::bindItems()
{
iGridRowUtils::bindItems();
}
// ================================================================
// 槽函数
// ================================================================
void nmGridRowUtils::slotValuePrevChanged(QVariant& o1, QVariant& o2)
{
iGridRowUtils::slotValuePrevChanged(o1, o2);
}
void nmGridRowUtils::slotGetValueOf(QString sPara, QVariant& o, bool& bOk)
{
iGridRowUtils::slotGetValueOf(sPara, o, bOk);
}

@ -18,7 +18,35 @@ HEADERS += $${wtInclude}/nmNum/nmGUI/*.h \
INCLUDEPATH += $${geoHome}/3rd/JSON/rapidjson-1.1.0/include/ \ INCLUDEPATH += $${geoHome}/3rd/JSON/rapidjson-1.1.0/include/ \
INCLUDEPATH += $${wtInclude}/nmNum/nmGUI \ # iBase 基础层iDlgBase.h -> ZxUiBase.h / Defines.h / ZxBaseUtil.h 等)
$${wtInclude}/nmNum/nmData INCLUDEPATH += $${wtInclude}/iBase
INCLUDEPATH += $${wtInclude}/iBase/iBase
INCLUDEPATH += $${wtInclude}/iBase/Interface
INCLUDEPATH += $${wtInclude}/iBase/iDefines
INCLUDEPATH += $${wtInclude}/iBase/iUtils
INCLUDEPATH += $${wtInclude}/iBase/iLogs
INCLUDEPATH += $${wtInclude}/iBase/iPlugin
INCLUDEPATH += $${wtInclude}/iBase/iProperty
INCLUDEPATH += $${wtInclude}/iBase/iUnit
INCLUDEPATH += $${wtInclude}/iBase/iXmlBase
# iGui 界面层
INCLUDEPATH += $${wtInclude}/iGui/iGuiBase
INCLUDEPATH += $${wtInclude}/iGui/iGuiGridPty
# iData 数据层
INCLUDEPATH += $${wtInclude}/iData
INCLUDEPATH += $${wtInclude}/iData/iDataPool
INCLUDEPATH += $${wtInclude}/iData/iDataEngine
INCLUDEPATH += $${wtInclude}/iData/iXmlManager
INCLUDEPATH += $${wtInclude}/iData/iXmlManager/Models
INCLUDEPATH += $${wtInclude}/iData/iSysUtils
# nmNum 数值解模块
INCLUDEPATH += $${wtInclude}/nmNum/nmGUI
INCLUDEPATH += $${wtInclude}/nmNum/nmData
LIBS += -lnmData LIBS += -lnmData
LIBS += -liBase -liUtils -liPlugin -liLogs -liProperty -liUnit -liXmlBase
LIBS += -liDataPool -liSysUtils -liDataEngine
LIBS += -liGuiBase -liGuiGridPty

Loading…
Cancel
Save