100 lines
3.4 KiB
Markdown
Raw Normal View History

2026-06-26 17:55:15 +08:00
# WDRemoteReceiverTest 界面改造说明
## 修改日期
2025-01-XX
## 修改内容
### 1. 界面布局重构
- **原布局**:左侧控制面板 + 右侧单个图像显示区域
- **新布局**
- 上部:左右双图像显示区域(并排)
- 下部:紧凑的控制按钮区域(最大高度 200px
### 2. 双目图像支持
- 添加 `labelLeftImage``labelRightImage` 两个 QLabel 用于显示左右目图像
- 新增信号:
- `uiShowLeftImage(const QImage&)`
- `uiShowRightImage(const QImage&)`
- 新增槽函数:
- `onShowLeftImage(const QImage&)`
- `onShowRightImage(const QImage&)`
-`setupReceiver()` 中注册双目图像回调 `SetBinocularRawImageCallback`
- 单目图像回调 `SetRawImageCallback` 仍然保留,显示在左图像区域
### 3. 搜索设备和工作模式
- 启动后通过 UDP 搜索设备,并通过机器码 `Open`
- `StartWork(WDRemoteWorkMode::Detection)` 启动检测并订阅检测结果/raw 图像
- 实时 RTSP 传图使用 `WDRemoteWorkMode::LiveStream`,与检测模式互斥
### 4. 日志窗口独立
- 移除主界面的 `textLog` 控件
- 创建独立的日志对话框 `m_pLogDialog`
- 添加"显示日志"按钮 `btnShowLog`,点击后弹出日志窗口
- 所有日志信息写入独立窗口的 `m_pLogText`
### 5. 控制面板优化
- 连接配置改为单行横向布局
- 所有控制按钮排列在一行,使用竖线分隔符分组:
- 工作控制:开始、停止、单次
- 参数设置:曝光、增益、算法参数
- 订阅控制:订阅原始图像、订阅检测结果
- 其他:获取信息、自定义命令、显示日志
## 文件修改清单
### mainwindow.ui
- 完全重构布局为 VBoxLayout
- 上部HBoxLayout 包含两个 QGroupBox左图像、右图像
- 下部QGroupBox 控制面板,包含两行按钮
- 移除 textLog 控件
### mainwindow.h
- 添加 `#include <QDialog>``#include <QTextEdit>`
- 修改信号:`uiShowRawImage``uiShowLeftImage` + `uiShowRightImage`
- 修改槽函数:`onShowRawImage``onShowLeftImage` + `onShowRightImage`
- 添加槽函数:`onShowLogClicked()`
- 添加成员变量:
- `QDialog* m_pLogDialog`
- `QTextEdit* m_pLogText`
- 更新注释说明为"双目版本"
### mainwindow.cpp
- 构造函数:
- 连接 `btnShowLog` 信号
- 创建日志对话框
- 更新窗口标题为"WDRemoteReceiver 测试(双目)"
- `setupReceiver()`
- 添加 `SetBinocularRawImageCallback` 回调注册
- 双目回调中分别处理左右目图像
- `onConnectClicked()`
- 使用搜索列表中的机器码打开设备
- StartWork 时按模式启动订阅或实时传图
- `onAppendLog()`:写入 `m_pLogText` 而非 `ui->textLog`
- `onShowLeftImage()` / `onShowRightImage()`:分别更新左右图像 QLabel
- 新增 `onShowLogClicked()`:显示日志对话框
## 使用说明
### 编译
使用 Qt Creator 打开 `WDRemoteReceiverTest.pro` 编译,或使用命令行:
```bash
qmake
make
```
### 运行
1. 启动后自动搜索设备
2. 从设备列表选择设备并点击"连接"
3. 点击"开始"启动检测模式
4. 左右图像区域实时显示双目图像(如果服务端发送双目数据)
5. 点击"显示日志"查看详细日志信息
## 依赖接口
- `IWDRemoteReceiver::SearchDevices()`
- `IWDRemoteReceiver::Open()`
- `IWDRemoteReceiver::StartWork(WDRemoteWorkMode::Detection)`
- `WDRemoteBinocularRawImage` 数据结构
这些接口已在 `Module/WDRemoteReceiver` 中实现。