综合平台编程器项目的远程存储
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

62 řádky
1.7 KiB

  1. /**
  2. * @file logic_instruction_dialog.h
  3. * @brief 定义梯形图指令参数编辑对话框
  4. * @version 1.0.0
  5. * @author suyu
  6. * @date 2026-08-22
  7. */
  8. #pragma once
  9. #include "domain/control_logic_model.h"
  10. #include <QDialog>
  11. #include <memory>
  12. class QComboBox;
  13. class QSpinBox;
  14. namespace Ui {
  15. class LogicInstructionDialog;
  16. }
  17. /** 梯形图节点配置对话框;只负责把表单转换为强类型 LogicNodeConfig */
  18. class LogicInstructionDialog final : public QDialog
  19. {
  20. Q_OBJECT
  21. public:
  22. /** 使用已有节点配置初始化指令参数表单 */
  23. explicit LogicInstructionDialog(
  24. const LogicNodeConfig &config,
  25. QWidget *parent = nullptr);
  26. /** 释放 Designer 界面对象 */
  27. ~LogicInstructionDialog() override;
  28. /** 返回当前表单配置,调用方仍需交给 LogicEditorService 校验 */
  29. LogicNodeConfig config() const;
  30. private:
  31. /** 根据传送配置初始化传送输入项 */
  32. void configureMove(const MoveNodeConfig &config);
  33. /** 根据算术配置初始化运算输入项 */
  34. void configureArithmetic(const ArithmeticNodeConfig &config);
  35. /** 根据操作数类型更新数值输入框的合法范围 */
  36. void updateOperandRanges();
  37. /** 将领域操作数写入对应的下拉框和数值框 */
  38. static void setOperand(
  39. QComboBox *kind_combo,
  40. QSpinBox *value_spin,
  41. const WordOperand &operand);
  42. /** 从下拉框和数值框读取领域操作数 */
  43. static WordOperand operandFrom(
  44. const QComboBox *kind_combo,
  45. const QSpinBox *value_spin);
  46. /** Qt Designer 生成的界面对象 */
  47. std::unique_ptr<Ui::LogicInstructionDialog> ui_;
  48. /** 打开对话框时保存的原始节点配置 */
  49. LogicNodeConfig original_config_;
  50. };