/** * @file logic_instruction_dialog.h * @brief 定义梯形图指令参数编辑对话框 * @version 1.0.0 * @author suyu * @date 2026-08-22 */ #pragma once #include "domain/control_logic_model.h" #include #include class QComboBox; class QSpinBox; namespace Ui { class LogicInstructionDialog; } /** 梯形图节点配置对话框;只负责把表单转换为强类型 LogicNodeConfig */ class LogicInstructionDialog final : public QDialog { Q_OBJECT public: /** 使用已有节点配置初始化指令参数表单 */ explicit LogicInstructionDialog( const LogicNodeConfig &config, QWidget *parent = nullptr); /** 释放 Designer 界面对象 */ ~LogicInstructionDialog() override; /** 返回当前表单配置,调用方仍需交给 LogicEditorService 校验 */ LogicNodeConfig config() const; private: /** 根据传送配置初始化传送输入项 */ void configureMove(const MoveNodeConfig &config); /** 根据算术配置初始化运算输入项 */ void configureArithmetic(const ArithmeticNodeConfig &config); /** 根据操作数类型更新数值输入框的合法范围 */ void updateOperandRanges(); /** 将领域操作数写入对应的下拉框和数值框 */ static void setOperand( QComboBox *kind_combo, QSpinBox *value_spin, const WordOperand &operand); /** 从下拉框和数值框读取领域操作数 */ static WordOperand operandFrom( const QComboBox *kind_combo, const QSpinBox *value_spin); /** Qt Designer 生成的界面对象 */ std::unique_ptr ui_; /** 打开对话框时保存的原始节点配置 */ LogicNodeConfig original_config_; };