PTT/UI_FIX_SUMMARY.md

113 lines
3.3 KiB
Markdown
Raw Permalink Normal View History

2026-01-24 13:43:45 +08:00
# 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()` 返回合适的尺寸