Fix list scrolling and row copy actions
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# 列表滚动与右键复制行信息
|
||||
|
||||
## 调研记录
|
||||
|
||||
- 目标文件:`src/accounts_app.py`。
|
||||
- 作品列表实际使用 `QScrollArea + QGridLayout + WorkCard`,不是可滚动的表格;`works_card_host` 在 `widgetResizable=True` 下被限制为视口高度,虽然内容的 `sizeHint()` 已经超过视口,垂直滚动范围仍为 `0`。
|
||||
- 任务、历史、异常列表使用 `QTableWidget`。这些表格依赖 Qt 默认滚动策略,未显式声明滚动条策略,后续样式或布局变化容易造成“内容超出但看不到”的问题。
|
||||
- 历史列表已有右键菜单,但仅在任务存在可重放 ID 时显示,且只能重放,不能复制。作品卡片和任务表没有统一的行复制入口。
|
||||
|
||||
## 实现方案
|
||||
|
||||
1. 作品卡片渲染完成后重新挂载滚动区域的 host,并按当前视口宽度固定 host 宽度、按网格内容高度设置 host 高度。这样保留三列卡片布局,同时恢复垂直滚动,避免额外的横向滚动条。
|
||||
2. 账号列表、作品列表、任务表、历史表显式设置 `ScrollBarAsNeeded`;作品卡片区关闭横向滚动。
|
||||
3. 所有任务表和隐藏的作品数据表增加“复制行信息”右键菜单;历史表在原有重放菜单中加入同一操作。
|
||||
4. 作品卡片捕获卡片及其子控件的右键事件,显示“复制行信息”。复制内容使用“字段: 值”格式,以 Tab 分隔字段,包含作品 ID、描述、统计、封面地址和时间等信息;表格复制内容包含表头、选择状态和单元格值。
|
||||
5. 复制成功后在状态栏提示“已复制行信息”,不改变数据库任务状态,也不触发任何真实业务动作。
|
||||
|
||||
## 验证
|
||||
|
||||
- `py_compile src/accounts_app.py src/test_onboarding_ui.py`:通过。
|
||||
- `test_lists_scroll_and_copy_rows`:通过,验证作品卡片和任务表均有垂直滚动范围,并验证剪贴板内容。
|
||||
- `test_works_preview_saves_selected_mode_and_full_business_data`:通过。
|
||||
- `test_history_preview_requires_selection_and_explicit_confirmation`:通过。
|
||||
- `git diff --check`:通过。
|
||||
- 已补充离线 UI 回归测试:`src/test_onboarding_ui.py::test_lists_scroll_and_copy_rows`。
|
||||
- 完整 onboarding 测试在当前 offscreen 环境的既有 profile 测试处超时;使用未修改的 HEAD 文件可复现,未将该环境问题归因于本次改动。
|
||||
Reference in New Issue
Block a user