2026-06-26 17:55:15 +08:00

3.4 KiB
Raw Permalink Blame History

WDRemoteReceiverTest 界面改造说明

修改日期

2025-01-XX

修改内容

1. 界面布局重构

  • 原布局:左侧控制面板 + 右侧单个图像显示区域
  • 新布局
    • 上部:左右双图像显示区域(并排)
    • 下部:紧凑的控制按钮区域(最大高度 200px

2. 双目图像支持

  • 添加 labelLeftImagelabelRightImage 两个 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>
  • 修改信号:uiShowRawImageuiShowLeftImage + uiShowRightImage
  • 修改槽函数:onShowRawImageonShowLeftImage + 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 编译,或使用命令行:

qmake
make

运行

  1. 启动后自动搜索设备
  2. 从设备列表选择设备并点击"连接"
  3. 点击"开始"启动检测模式
  4. 左右图像区域实时显示双目图像(如果服务端发送双目数据)
  5. 点击"显示日志"查看详细日志信息

依赖接口

  • IWDRemoteReceiver::SearchDevices()
  • IWDRemoteReceiver::Open()
  • IWDRemoteReceiver::StartWork(WDRemoteWorkMode::Detection)
  • WDRemoteBinocularRawImage 数据结构

这些接口已在 Module/WDRemoteReceiver 中实现。