# 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 ` 和 `#include ` - 修改信号:`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` 中实现。