97 lines
2.6 KiB
C
Raw Permalink Normal View History

2026-06-26 17:55:15 +08:00
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QImage>
#include <QPixmap>
#include <QMutex>
#include <QString>
#include <atomic>
#include <vector>
#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<WDRemoteDeviceInfo> m_devices;
bool m_singleInProgress{false};
std::atomic<bool> 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