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

3.4 KiB
Raw Blame History

id, title, phase, deps, status, created
id title phase deps status created
T-683 禁用设置页数字微调框滚轮改值 5
T-682
DONE 2026-07-21

T-683 禁用设置页数字微调框滚轮改值

问题 / 背景

设置页的连接超时、并发数、端口、重试次数和蝦皮执行参数使用 QSpinBox。鼠标在数字微调框上滚动时,Qt 默认会改变数值,用户浏览较长设置页时容易无意修改关键参数,且未保存标记不足以帮助用户发现具体被改动的值。

方案

  • 为设置页专用数字微调框提供统一的无滚轮实现,并替换该页全部 QSpinBox:默认网关连接超时、自定义模型连接超时、标题/图片并发、失败重试、默认调试端口、端口范围、Chrome 就绪超时、每批最大更新条数、同时更新蝦皮账号。
  • 指针滚轮悬停在任意上述控件上时,不改变其数值、不触发未保存更改;滚轮事件忽略并继续由外层设置滚动区处理。
  • 保留直接输入、上下箭头、键盘上/下键和程序化回填的既有行为与范围校验。
  • 该行为只作用于设置页,不影响其它模块的进度条、表格、下拉框或将来需要滚轮编辑的数字控件。

验收要点

  • 设置页全部数字微调框滚动滚轮后值不变,也不产生未保存更改。
  • 鼠标滚轮仍可继续滚动设置页外层内容,而非被控件吞掉。
  • 上下箭头、键盘和直接输入仍能修改数值并保持现有范围/dirty 语义。
  • 连接超时、并发、端口、重试和蝦皮执行参数的加载、保存、放弃未保存更改不回归。

测试与文档

  • 更新 tests/test_gui.py:对设置页所有专用数字微调框发送滚轮事件,断言数值与 dirty 状态不变;覆盖箭头或键盘修改仍有效。
  • 更新 docs/routes.md 设置页交互说明。

验证

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:设置页自定义网关模型配置区的紧凑布局。

执行记录

  • 新增设置页专用 SettingsSpinBox,其滚轮事件不调用数值步进,而是按原始位置、增量和修饰键转发给最近的 QScrollArea 视口;设置页保留 settings_scroll_area 引用供明确的交互回归。
  • 设置页全部 11 个数字微调框均替换为该组件:两类连接超时、标题/图片并发、重试、三个端口、Chrome 就绪超时、每批最大更新条数和同时更新蝦皮账号。箭头、键盘与直接输入未修改。
  • 更新设置页交互说明和 GUI 回归:确认全部数字框都是专用组件,滚轮后数值及 dirty 状态不变、外层页面继续滚动,键盘上箭头仍会改值并进入未保存状态。
  • 验证通过:py -3.10 -m unittest tests.test_gui(213 项)、py -3.10 -m unittest discover -s tests(654 项)、py -3.10 -m ruff check app tests main.py、py -3.10 -m compileall app main.py、git diff --check。