48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
# 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. 不需要新建任何文件 |