Files
cmshoppe/docs/tasks/T-683.md
T

58 lines
2.5 KiB
Markdown
Raw Normal View History

---
id: T-683
title: 禁用设置页数字微调框滚轮改值
phase: 5
deps: [T-682]
status: TODO
created: 2026-07-21
---
# T-683 禁用设置页数字微调框滚轮改值
## 问题 / 背景
设置页的连接超时、并发数、端口、重试次数和蝦皮执行参数使用 `QSpinBox`。鼠标在数字微调框上滚动时,Qt 默认会改变数值,用户浏览较长设置页时容易无意修改关键参数,且未保存标记不足以帮助用户发现具体被改动的值。
## 方案
- 为设置页专用数字微调框提供统一的无滚轮实现,并替换该页全部 `QSpinBox`:默认网关连接超时、自定义模型连接超时、标题/图片并发、失败重试、默认调试端口、端口范围、Chrome 就绪超时、每批最大更新条数、同时更新蝦皮账号。
- 指针滚轮悬停在任意上述控件上时,不改变其数值、不触发未保存更改;滚轮事件忽略并继续由外层设置滚动区处理。
- 保留直接输入、上下箭头、键盘上/下键和程序化回填的既有行为与范围校验。
- 该行为只作用于设置页,不影响其它模块的进度条、表格、下拉框或将来需要滚轮编辑的数字控件。
## 验收要点
- [ ] 设置页全部数字微调框滚动滚轮后值不变,也不产生未保存更改。
- [ ] 鼠标滚轮仍可继续滚动设置页外层内容,而非被控件吞掉。
- [ ] 上下箭头、键盘和直接输入仍能修改数值并保持现有范围/dirty 语义。
- [ ] 连接超时、并发、端口、重试和蝦皮执行参数的加载、保存、放弃未保存更改不回归。
## 测试与文档
- 更新 `tests/test_gui.py`:对设置页所有专用数字微调框发送滚轮事件,断言数值与 dirty 状态不变;覆盖箭头或键盘修改仍有效。
- 更新 `docs/routes.md` 设置页交互说明。
## 验证
```bash
py -3.10 -m unittest tests.test_gui
py -3.10 -m unittest discover -s tests
py -3.10 -m ruff check app tests main.py
py -3.10 -m compileall app main.py
git diff --check
```
## 边界(不改什么)
- 不改变任何设置字段的默认值、范围、保存路径、校验或业务含义。
- 不禁用其它模块的滚轮,不调整下拉框、文本输入、表格、日志或页面整体滚动策略。
- 不改默认网关、自定义网关、AI 请求、Chrome/CDP、采集、商品套图或更新蝦皮流程。
## 关联
- T-682:设置页自定义网关模型配置区的紧凑布局。
## 执行记录
- 待实现。