#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& map, bool bOnlyFitted = false, bool bClearMap = true) override; /// @brief 批量获取所有参数单位 /// @param map 输出结果,Key为英文ID /// @param bOnlyFitted 是否仅获取参与拟合的参数 /// @param bClearMap 是否先清空map virtual bool getAllParaUnits(QMap& 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& 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; };