#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include "Presenter/Inc/WheelMeasurePresenter.h" #include "IWheelMeasureStatus.h" // 前向声明widgets class ImageGridWidget; class DeviceStatusWidget; class MeasureResultListWidget; class DialogCameraLevel; class DialogAlgoArg; class DialogCamera; QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } class QLabel; QT_END_NAMESPACE class MainWindow : public QMainWindow, public IWheelMeasureStatus { Q_OBJECT signals: void logUpdateRequested(const QString& message); public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); // IWheelMeasureStatus接口方法声明 void OnStatusUpdate(const QString& statusMessage) override; void OnNeedShowImageCount(const QStringList& cameraNames) override; void OnDeviceStatusChanged(const QString& deviceName, int deviceStatus) override; void OnMeasureResult(const WheelMeasureResult& result) override; void OnCameraConnected(const QString& cameraName) override; void OnCameraDisconnected(const QString& cameraName) override; void OnWorkStatusChangedImpl(WorkStatus status) override; void OnErrorOccurred(const QString& errorMessage) override; void OnClearMeasureData() override; protected: void resizeEvent(QResizeEvent* event) override; private slots: void on_btn_hide_clicked(); void on_btn_close_clicked(); void on_btn_test_clicked(); void on_btn_start_clicked(); void on_btn_stop_clicked(); void on_btn_camera_config_clicked(); void on_btn_algo_config_clicked(); void on_btn_camera_level_clicked(); void onConfigSaved(); void onDeviceClicked(const QString& deviceName); void onTileRightClicked(int index, const QString& alias); void updateDetectionLog(const QString& message); private: void setupVersionDisplay(); Ui::MainWindow *ui; DialogCamera* m_dialogCamera = nullptr; DialogAlgoArg* m_dialogAlgoArg = nullptr; DialogCameraLevel* m_dialogCameraLevel = nullptr; ImageGridWidget* m_gridView = nullptr; DeviceStatusWidget* m_deviceStatusWidget = nullptr; MeasureResultListWidget* m_measureResultWidget = nullptr; QSplitter* m_splitter = nullptr; WheelMeasurePresenter* m_presenter = nullptr; QLabel* m_versionLabel = nullptr; // 日志相关 QStringListModel* m_logModel = nullptr; QString m_lastLogMessage; int m_lastLogCount = 0; }; #endif // MAINWINDOW_H