#ifndef DIALOGCAMERA_H #define DIALOGCAMERA_H #include #include #include #include #include #include "IVrWheelMeasureConfig.h" // 前向声明 class WheelMeasurePresenter; namespace Ui { class DialogCamera; } class DialogCamera : public QDialog { Q_OBJECT public: explicit DialogCamera(QWidget *parent = nullptr); ~DialogCamera(); // 设置Presenter用于访问配置 void SetPresenter(WheelMeasurePresenter* presenter); // 获取配置的相机列表 std::vector GetCameraConfigs() const; signals: void configSaved(); private slots: void on_btn_add_camera_clicked(); void on_btn_save_clicked(); void on_btn_cancel_clicked(); void onDeleteCameraClicked(); void onMoveUpClicked(); void onMoveDownClicked(); private: // 初始化表格 void InitTable(); // 加载已有的相机配置 void LoadExistingCameras(); // 刷新相机列表显示 void RefreshCameraList(); // 添加相机到列表 bool AddCamera(const QString& name, const QString& ip); // 删除相机 void RemoveCamera(int row); // 验证IP地址格式 bool ValidateIPAddress(const QString& ip); // 更新添加按钮状态 void UpdateAddButtonState(); // 保存配置到文件 bool SaveConfigToFile(); private: Ui::DialogCamera *ui; std::vector m_cameraConfigs; // 相机配置列表 const int MAX_CAMERAS = 4; // 最多支持4个相机 WheelMeasurePresenter* m_presenter = nullptr; // Presenter用于访问配置 }; #endif // DIALOGCAMERA_H