Files
VX5_KRO_GearPump/docs/btn_defPrintSet设计.md
T

48 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. 不需要新建任何文件