|
- /**
- * @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 <QDialog>
-
- #include <memory>
-
- 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::LogicInstructionDialog> ui_;
- /** 打开对话框时保存的原始节点配置 */
- LogicNodeConfig original_config_;
- };
|