#ifndef DIALOGALGOARG_H #define DIALOGALGOARG_H #include #include #include #include #include "ConfigManager.h" namespace Ui { class DialogAlgoarg; } class DialogAlgoarg : public QDialog { Q_OBJECT public: explicit DialogAlgoarg(ConfigManager* configManager, QWidget *parent = nullptr); ~DialogAlgoarg(); private slots: void on_btn_camer_ok_clicked(); void on_btn_camer_cancel_clicked(); void on_btn_loadCalibMatrix_clicked(); void onCalibCameraChanged(int index); private: void LoadConfigToUI(); bool SaveConfigFromUI(); // 加载各个参数组到 UI void LoadDetectionParamToUI(const VrHoleDetectionParam& param); void LoadFilterParamToUI(const VrHoleFilterParam& param); void LoadSortModeToUI(int sortMode); // 从 UI 保存各个参数组 bool SaveDetectionParamFromUI(VrHoleDetectionParam& param); bool SaveFilterParamFromUI(VrHoleFilterParam& param); bool SaveSortModeFromUI(int& sortMode); // 网络配置(TCP协议和坐标输出) void LoadPlcRobotServerConfigToUI(const VrPlcRobotServerConfig& config); bool SavePlcRobotServerConfigFromUI(VrPlcRobotServerConfig& config); void InitPoseOutputOrderComboBox(); void InitDirVectorInvertComboBox(); void InitSortModeComboBox(); // 手眼标定矩阵(多相机) void InitCalibCameraComboBox(); void LoadCalibMatrixToUI(); void LoadCalibMatrixForCamera(int cameraIndex); void LoadIdentityMatrixToUI(); // 加载单位矩阵到UI void LoadCalibMatrixFromFile(const QString& filePath); bool SaveCalibMatrixToConfig(std::vector& calibMatrixList); bool SaveCurrentCalibMatrixToCache(); QLineEdit* GetCalibLineEdit(int row, int col); void InitEulerOrderComboBox(); private: Ui::DialogAlgoarg *ui; ConfigManager* m_pConfigManager; QString m_configFilePath; int m_currentCalibCameraIndex = 0; // 当前选中的标定相机索引(0-based) std::vector m_calibMatrixCache; // 标定矩阵缓存 }; #endif // DIALOGALGOARG_H