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/nmNum/nmGUI/nmGridRowUtils.h

155 lines
6.3 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 "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;
};