# 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. 不需要新建任何文件