Files
VX5_KRO_GearPump/docs/btn_defPrintSet设计.md
T

2.2 KiB
Raw Blame History

btn_defPrintSet 默认打印设置 实现方案(复用 InkJetPrinter 的 PrintSetting)

1. 需求

MainInstruction 中按钮 btn_defPrintSet,点击后切换到打印设置页面编辑默认参数,通过 PrintSettingModel::setDefPrintSettingModel() 持久化。

2. 核心思路

复用 InkJetPrinter::m_PrintSetting 实例,通过 setDefaultSettingMode(true) 临时切换模式,关闭时恢复。

3. 数据流

btn_defPrintSet 点击
  → MainInstruction emit sendButtonClickedSignal(6)
  → InkJetPrinter::getMainInstructWidgetButtonClickedSlot case 6
    → 保存当前 model:m_savedPrintSettingModel = m_PrintSetting->model()
    → m_PrintSetting->setDefaultSettingMode(true)     // 按钮文本变为"保存为默认"
    → m_PrintSetting->setModel(defPrintSettingModel()) // 从 XML 加载
    → m_isDefaultPrintSettingMode = true
    → m_StackedWidget->setCurrentWidget(m_PrintSetting) // 切换到打印设置页

用户编辑 → 控件直接修改 m_model

点击"保存为默认"
  → on_pushButtonApply_pressed
  → 检测 m_isDefaultSettingMode → updateModelFromUI() → setDefPrintSettingModel → 写入 XML

点击关闭 → PrintSetting emit sendButtonClickedSignal(1)
  → InkJetPrinter::getPrintSettingButtonClickedSlot
    → 检测 m_isDefaultPrintSettingMode
      → m_PrintSetting->setModel(m_savedPrintSettingModel) // 恢复
      → m_PrintSetting->setDefaultSettingMode(false)
      → m_isDefaultPrintSettingMode = false
    → m_StackedWidget->setCurrentWidget(m_TestPrintWidget)  // 返回

4. 改动清单

文件 改动
Printsetting.h 新增 setDefaultSettingMode(bool) 声明 + m_isDefaultSettingMode 成员
Printsetting.cpp 新增 setDefaultSettingMode 实现 + on_pushButtonApply_pressed 加分支
MainInstruction.cpp btn_defPrintSet → emit sendButtonClickedSignal(6)
InkJetPrinter.h 新增 m_isDefaultPrintSettingMode、m_savedPrintSettingModel、enterDefaultPrintSettingMode()、exitDefaultPrintSettingMode()
InkJetPrinter.cpp 实现进入/退出默认模式逻辑,getMainInstructWidgetButtonClickedSlot 加 case 6,getPrintSettingButtonClickedSlot 加恢复逻辑

5. 不需要新建任何文件