3.3 KiB
3.3 KiB
UI 界面显示问题修复总结
问题描述
- 登录界面问题:内容显示不完整或布局有问题
- 主界面左侧面板问题:设备信息、连接配置、控制按钮等组件不显示
根本原因分析
问题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
- 用户名输入框:正常
- 密码输入框:正常
- 登录按钮:正常
✅ 主窗口组件
- 设备信息组件:✓
- 连接配置组件:✓
- 进度显示组件:✓
- 测试项目表格:✓
- 执行日志查看器:✓
- 控制按钮:✓
关键要点
- 简化总是更好 - 避免不必要的容器嵌套
- QScrollArea 需谨慎 - 需要正确设置
setWidgetResizable(True)或手动设置 widget 尺寸 - 直接操作布局 - 如果只是为了设置样式或边距,直接在主布局上操作会更清晰
后续建议
如果需要左侧面板支持滚动(当内容过多时),应该:
- 使用
QScrollArea并设置setWidgetResizable(True) - 或者使用自定义的可滚动容器
- 确保 widget 的
sizeHint()返回合适的尺寸