#include "dialogalgoarg.h" #include "ui_dialogalgoarg.h" #include #include #include #include #include #include #include #include "PathManager.h" DialogAlgoarg::DialogAlgoarg(IVrConfig* vrConfig, QWidget *parent) : QDialog(parent) , ui(new Ui::DialogAlgoarg) , m_vrConfig(vrConfig) { ui->setupUi(this); // 隐藏标题栏 setWindowFlags(Qt::FramelessWindowHint); // 获取配置文件路径 m_configFilePath = PathManager::GetConfigFilePath(); // 从配置文件加载数据到界面 LoadConfigToUI(); } DialogAlgoarg::~DialogAlgoarg() { delete ui; } void DialogAlgoarg::LoadConfigToUI() { if (!m_vrConfig) { return; } try { // 加载配置文件 m_configData = m_vrConfig->LoadConfig(m_configFilePath.toStdString()); // 将激光焊接参数加载到界面控件 const VrLapWeldParam& lapWeldParam = m_configData.algorithmParams.lapWeldParam; // 设置参数到界面 ui->lineEdit_lapHeight->setText(QString::number(lapWeldParam.lapHeight)); ui->lineEdit_weldMinLen->setText(QString::number(lapWeldParam.weldMinLen)); ui->lineEdit_weldRefPoints->setText(QString::number(lapWeldParam.weldRefPoints)); // 设置扫描模式下拉框 ui->comboBox_scanMode->setCurrentIndex(static_cast(lapWeldParam.scanMode)); } catch (const std::exception& e) { QMessageBox::critical(this, "错误", "加载配置文件失败!"); } } bool DialogAlgoarg::SaveConfigFromUI() { if (!m_vrConfig) { return false; } try { // 从界面控件读取参数 VrLapWeldParam& lapWeldParam = m_configData.algorithmParams.lapWeldParam; // 读取参数 lapWeldParam.lapHeight = ui->lineEdit_lapHeight->text().toDouble(); lapWeldParam.weldMinLen = ui->lineEdit_weldMinLen->text().toDouble(); lapWeldParam.weldRefPoints = ui->lineEdit_weldRefPoints->text().toInt(); // 读取扫描模式 lapWeldParam.scanMode = static_cast(ui->comboBox_scanMode->currentIndex()); // 保存配置文件 bool success = m_vrConfig->SaveConfig(m_configFilePath.toStdString(), m_configData); return success; } catch (const std::exception& e) { return false; } } void DialogAlgoarg::on_btn_camer_ok_clicked() { if (SaveConfigFromUI()) { QMessageBox::information(this, "成功", "配置保存成功!"); accept(); } else { QMessageBox::warning(this, "失败", "配置保存失败,请检查文件权限!"); } } void DialogAlgoarg::on_btn_camer_cancel_clicked() { // 直接关闭窗口,不保存任何更改 reject(); }