PTT/UI_FIX_SUMMARY.md

3.3 KiB
Raw Blame History

UI 界面显示问题修复总结

问题描述

  1. 登录界面问题:内容显示不完整或布局有问题
  2. 主界面左侧面板问题:设备信息、连接配置、控制按钮等组件不显示

根本原因分析

问题1登录界面

  • 原因:创建了一个多余的 content_widget 容器,然后在其上添加 content_layout
  • 影响:导致布局嵌套过深,对话框宽度可能太小,内容无法正确显示

问题2主窗口左侧面板

  • 原因:添加了 QScrollArea 并设置 setWidgetResizable(False)
  • 影响QScrollArea 不会自动调整 widget 的大小,导致 left_panel 中的组件无法显示

解决方案

修复1登录界面 (login_dialog.py)

之前的结构

main_layout (0,0,0,0)
  └── content_widget (QWidget, 60,50,60,50)
       └── content_layout
            ├── title
            ├── form
            └── buttons

修复后的结构

main_layout (60,50,60,50)
  ├── title
  ├── form
  └── buttons

具体改动

  • 删除了 content_widget 容器
  • 直接使用 main_layout 作为 content_layout
  • 将 margins 从 main_layout(0,0,0,0) + content_widget(60,50,60,50) 简化为 main_layout(60,50,60,50)
  • 设置对话框背景色为白色

修复2主窗口左侧面板 (main_window.py)

之前的结构

splitter
  ├── left_scroll (QScrollArea, setWidgetResizable=False)
  │    └── left_panel (QWidget)
  │         └── left_layout
  │              ├── device_group
  │              ├── conn_group
  │              ├── progress_group
  │              └── btn_layout
  └── right_panel

修复后的结构

splitter
  ├── left_panel (QWidget)
  │    └── left_layout
  │         ├── device_group
  │         ├── conn_group
  │         ├── progress_group
  │         └── btn_layout
  └── right_panel

具体改动

  • 删除了 QScrollArea 容器
  • 直接将 left_panel 添加到 content_splitter
  • 保持原有的布局结构和尺寸限制

修改文件清单

文件 修改内容 影响
src/ui/login_dialog.py 简化布局结构,移除多余容器 修复登录界面显示
src/ui/main_window.py 移除QScrollArea直接使用left_panel 修复左侧面板组件显示

验证结果

登录对话框

  • 尺寸480×400
  • 用户名输入框:正常
  • 密码输入框:正常
  • 登录按钮:正常

主窗口组件

  • 设备信息组件:✓
  • 连接配置组件:✓
  • 进度显示组件:✓
  • 测试项目表格:✓
  • 执行日志查看器:✓
  • 控制按钮:✓

关键要点

  1. 简化总是更好 - 避免不必要的容器嵌套
  2. QScrollArea 需谨慎 - 需要正确设置 setWidgetResizable(True) 或手动设置 widget 尺寸
  3. 直接操作布局 - 如果只是为了设置样式或边距,直接在主布局上操作会更清晰

后续建议

如果需要左侧面板支持滚动(当内容过多时),应该:

  1. 使用 QScrollArea 并设置 setWidgetResizable(True)
  2. 或者使用自定义的可滚动容器
  3. 确保 widget 的 sizeHint() 返回合适的尺寸