76 lines
1.7 KiB
C
Raw Normal View History

2025-12-27 09:34:02 +08:00
#ifndef DIALOGCAMERA_H
#define DIALOGCAMERA_H
#include <QDialog>
#include <QTableWidget>
#include <QPushButton>
#include <vector>
#include <string>
#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<WheelCameraParam> 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<WheelCameraParam> m_cameraConfigs; // 相机配置列表
const int MAX_CAMERAS = 4; // 最多支持4个相机
WheelMeasurePresenter* m_presenter = nullptr; // Presenter用于访问配置
};
#endif // DIALOGCAMERA_H