#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include "IWDRemoteReceiver.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class QLabel; class QComboBox; /** * @brief WDRemoteReceiver 测试应用(支持单目/双目切换) * * 演示: * - 连接 / 断开远端 * - 启停持续工作(StartWork 自动订阅,StopWork 自动取消) * - 单次检测 * - 设置曝光 / 增益 / 算法参数 * - 获取 Server 信息 * - 单/双目原始图像在 QLabel 显示 * - 日志内嵌在右下角 * - 检测模式切换(mono/binocular) */ class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget* parent = nullptr); ~MainWindow() override; signals: // 把库的回调(任意线程)转发到 GUI 线程 void uiAppendLog(const QString& line); void uiShowDetection(const QString& summary); void uiShowLeftImage(const QImage& img); void uiShowRightImage(const QImage& img); void uiUpdateConnectState(bool connected); private slots: void onSearchClicked(); void onDeviceSelected(int index); void onConnectClicked(); void onDisconnectClicked(); void onLiveStreamClicked(); void onStartWorkClicked(); void onStopWorkClicked(); void onSingleClicked(); void onSetExposureClicked(); void onSetGainClicked(); void onSetAlgoParamsClicked(); void onGetInfoClicked(); void onCustomCmdClicked(); void onSwapCamerasClicked(); void onChooseSaveDirClicked(); void onSaveImagesClicked(); void onDetectModeChanged(int index); void onAppendLog(const QString& line); void onShowDetection(const QString& summary); void onShowLeftImage(const QImage& img); void onShowRightImage(const QImage& img); void onUpdateConnectState(bool connected); private: void setupReceiver(); void releaseReceiver(); // 把 WDRemoteRawImage 转成 QImage(按像素格式构造) static QImage rawImageToQImage(const WDRemoteRawImage& img); Ui::MainWindow* ui{nullptr}; IWDRemoteReceiver* m_pReceiver{nullptr}; std::vector m_devices; bool m_singleInProgress{false}; std::atomic m_monoImageMode{false}; QMutex m_latestImageMutex; QImage m_latestLeftImage; QImage m_latestRightImage; QString m_saveImageDir; int m_saveImageSeq{1}; QComboBox* m_pDetectModeCombo{nullptr}; }; #endif // MAINWINDOW_H