2025-12-10 00:01:32 +08:00

56 lines
1.9 KiB
C++

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStringListModel>
#include "WorkpiecePositionPresenter.h"
#include "IYWorkpiecePositionStatus.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow, public IYWorkpiecePositionStatus
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
void updateStatusLog(const QString& message);
void Init();
virtual void OnStatusUpdate(const std::string& statusMessage) override;
virtual void OnDetectionResult(const WorkpiecePositionDetectionResult& result) override;
virtual void OnBinocularMarkConnectionChanged(bool connected) override;
virtual void OnEpicEyeConnectionChanged(bool connected) override;
virtual void OnCamera1StatusChanged(bool) override {}
virtual void OnCamera2StatusChanged(bool) override {}
virtual void OnRobotConnectionChanged(bool) override {}
virtual void OnSerialConnectionChanged(bool) override {}
virtual void OnCameraCountChanged(int) override {}
virtual void OnWorkStatusChanged(WorkStatus status) override;
signals:
void workStatusUpdateRequested(WorkStatus status);
void detectionResultUpdateRequested(const WorkpiecePositionDetectionResult& result);
void logUpdateRequested(const QString& message);
private slots:
void updateWorkStatusLabel(WorkStatus status);
void updateDetectionResultDisplay(const WorkpiecePositionDetectionResult& result);
void updateDetectionLog(const QString& message);
void on_btn_start_clicked();
void on_btn_stop_clicked();
private:
Ui::MainWindow *ui;
WorkpiecePositionPresenter* m_presenter;
QStringListModel* m_logModel;
void displayMarkData(const std::vector<VrMark3D>& marks);
void displayCenterPosition(const WorkpieceCenterPosition& centerPosition);
};
#endif // MAINWINDOW_H