#ifndef NMWXANALYTICALDESIGN_H #define NMWXANALYTICALDESIGN_H #include "nmSubWxs_global.h" #include "iDlgBase.h" #include // 前向声明 class QGroupBox; class QCheckBox; class QLineEdit; class QPushButton; class QVBoxLayout; class QHBoxLayout; class QLabel; class QRadioButton; class QComboBox; class QDateTimeEdit; class QStackedLayout; class nmDataWellBase; class nmDataDiagnostic; class nmDataReservoir; class nmGUIComponentLineEdit; class nmDataAnalyzeManager; class NM_SUB_WXS_EXPORT nmWxNumericalDesign : public iDlgBase { Q_OBJECT public: explicit nmWxNumericalDesign(QWidget *parent = nullptr); ~nmWxNumericalDesign(); // 静态方法,供外部调用以通知时间变表皮状态变化 static void notifyTimeDependentSkinChanged(const QString& wellName, bool checked); signals: void sigGenerateClicked(); // 点击生成按钮时发出的信号 void sigIncludeWells(); // 包含其他井后刷新参数栏的信号 //void sigUpdateWellPlot(nmDataAnalyzeManager*); // 更新井图元 //void sigIncludeWells(); // 包含其他井后刷新参数栏的信号 private slots: // 新增的槽函数 void onGenerateClicked(); // 生成按钮点击槽 void onResetFromDiagnosticClicked(); // "从诊断复位"按钮点击槽 void onResetFromAnalyticalClicked(); // "从解析复位"按钮点击槽 void onManualOutputSettingsClicked(); // "手动输出设置"按钮点击槽 void onRedefineKrPcIconClicked(); // "重新定义 KrPc"图标按钮点击槽 void onApplyUnconsolidationIconClicked(); // "应用未固结"图标按钮点击槽 void onCustomNumericalSettingsClicked(); // "自定义数值设置"按钮点击槽 void onAutomaticFittingClicked(); void onForecastClicked(); void onSensitiveClicked(); // 现有和调整的槽函数 void onOptionsIconClicked(); // "包含其他井"按钮点击 void onTimeIconClicked(); // "时间相关"按钮 (在Advanced组中) void onOutputResultFieldsAutomaticToggled(bool checked); // "输出结果字段"自动单选按钮状态改变槽 void onOutputResultFieldsManualToggled(bool checked); // "输出结果字段"手动单选按钮状态改变槽 // 处理 m_pIgnoreCheck 状态变化的槽 //void onIgnoreCheckToggled(bool checked); // 处理 Output result fields 复选框的切换 void onOutputResultFieldsToggled(bool checked); // 处理时间参考系单选按钮切换 //void onTimeReferenceSystemToggled(bool checked); // 时间步组件值改变时,同步更新数据模型 //void onTimeSteppingUiChanged(); // 时间单位更新 //void onTimeUnitChanged(const QString& newUnit); // 重置时间步数据 //void onResetTimeStep(); // 保存时间变表皮状态 void onTimeDependentCheck(bool checked); private: // 初始化UI组件的私有函数 void initMainOptionsGroup(); // 初始化主选项组 void initOutputGroup(); // 初始化输出组 (新) void initAdvancedGroup(); // 初始化高级组 (新) void initTimeSteppingGroup(); // 初始化时间步进组 void initNumericalSettingsGroup(); // 初始化数值设置组 (新) void setupConnections(); // 设置信号槽连接 void initButton(); // 初始化按钮 // 根据当前数据中心的数据更新时间步设置组件的值 void updateUiFromData(); // 根据UI更新模型数据 void updateDataFromUi(); private: // 主选项组件 QGroupBox* m_pMainOptionsGroup; // 主选项分组框 QCheckBox* m_pIncludeOtherWellsCheck; // "包含其他井"复选框 QPushButton* m_pOptionsGearButton; // 其他井按钮 QCheckBox* m_pImposePiCheck; // "施加 Pi"复选框 QCheckBox* m_pShowAveragePressureCheck; // "显示平均压力"复选框 (新) QPushButton* m_pResetDiagnosticButton; // "从诊断复位"按钮 (新) QPushButton* m_pResetAnalyticalButton; // "从解析复位"按钮 (新) // 输出组组件 (新) QGroupBox* m_pOutputGroup; // 输出分组框 QCheckBox* m_pOutputResultFieldsCheck; // 输出结果文件复选框 QRadioButton* m_pOutputAutomaticRadio; // "自动"输出单选按钮 QRadioButton* m_pOutputManualRadio; // "手动"输出单选按钮 QCheckBox* m_pOutputWellDrainageCheck; // "输出井排量结果"复选框 QPushButton* m_pOutputManualIconButton; // "手动"输出旁边的图标按钮 // 高级组组件 (新) QGroupBox* m_pAdvancedGroup; // 高级分组框 QCheckBox* m_pTimeDependentCheck; // "时间相关"复选框 QPushButton* m_pTimeDependentIconButton; // "时间相关"按钮 QCheckBox* m_pUseWellIntakeCheck; // "使用井筒进水"复选框 (从井筒模型组移入) QCheckBox* m_pRedefineKrPcCheck; // "重新定义 KrPc 在水力压裂中"复选框 QPushButton* m_pRedefineKrPcIconButton; // "重新定义 KrPc"旁边的图标按钮 QCheckBox* m_pApplyUnconsolidationCheck; // "应用未固结在水力压裂中"复选框 QPushButton* m_pApplyUnconsolidationIconButton; // "应用未固结"旁边的图标按钮 QCheckBox* m_pUseDFNCheck; // "使用 DFN"复选框 // 时间步进组件 QGroupBox* m_pTimeSteppingGroup; // 时间步进分组框 nmGUIComponentLineEdit* m_pTimeGrowthExponentCom; nmGUIComponentLineEdit* m_pDtMinCom; nmGUIComponentLineEdit* m_pDtMaxCom; //QCheckBox* m_pUseCoarseSteppingCheck; //QPushButton* m_pResetTimeStep; // 重置时间步设置 //QRadioButton* m_pAbsoluteRadio; // "绝对"时间单选按钮 //QRadioButton* m_pElapsedRadio; // "流逝"时间单选按钮 //QComboBox* m_pTimeUnitComboBox; // 固定的时间单位标签,显示"hr" // 切换不同状态下的时间输入框 //QStackedLayout* m_pFromStackedLayout; //QStackedLayout* m_pSimulateUntilStackedLayout; //QLineEdit* m_pTimeGrowthExponentLineEdit; // 流逝时间输入框 //QDateTimeEdit* m_pFromAbsoluteDateTimeEdit; // 绝对时间输入框 //QLineEdit* m_pSimulateUntilElapsedLineEdit; // 流逝时间输入框 //QDateTimeEdit* m_pSimulateUntilAbsoluteDateTimeEdit; // 绝对时间输入框 // 数值设置组件 QGroupBox* m_pNumericalSettingsGroup; // 数值设置分组框 QRadioButton* m_pUseAutomaticSettingsRadio; // "使用自动设置"单选按钮 QRadioButton* m_pUseCustomSettingsRadio; // "使用自定义设置"单选按钮 QPushButton* m_pCustomSettingsIconButton; // "自定义设置"旁边的图标按钮 // 按钮 QPushButton* m_pGenerateButton; QPushButton* m_pAutomaticfittingBtn; QPushButton* m_pForecastBtn; QPushButton* m_pSensitiveBtn; QHBoxLayout* m_pGenerateLayout; // 主布局 QVBoxLayout* m_pMainLayout; // 图标路径 QString m_sIconDir; static nmWxNumericalDesign* s_pCurrentInstance; // 静态指针,指向当前活动实例 }; #endif // NMWXANALYTICALDESIGN_H