74 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DIALOGALGOARG_H
#define DIALOGALGOARG_H
#include <QDialog>
#include <QString>
class QLineEdit;
class HandEyeCalibWidget;
class NetworkConfigWidget;
class TireHolePosePresenter;
namespace Ui {
class DialogAlgoArg;
}
/**
* @brief 轮胎孔定位 - 算法参数配置对话框(类比 WorkpieceHole 风格)
*
* 包含四个 Tab
* - 角点检测6 个 corner 参数,所有相机共用)
* - 轮胎参数diameter / thickness所有相机共用
* - 手眼标定(多相机独立矩阵,存储在 handEyeCalibMatrixList
* - 网络配置TCP 端口、姿态输出顺序、字节序)
*/
class DialogAlgoArg : public QDialog
{
Q_OBJECT
public:
explicit DialogAlgoArg(QWidget *parent = nullptr);
~DialogAlgoArg();
void SetPresenter(TireHolePosePresenter* presenter);
private slots:
void on_btnOK_clicked();
void on_btnCancel_clicked();
void on_btnApply_clicked();
void on_btnReset_clicked();
void onCalibMatrixLoaded(int cameraIndex, const double* matrix);
void onSaveCalibRequested(int cameraIndex, const double* matrix);
private:
void initNumericEditors();
void initTireParamEditors();
void initHandEyeCalibTab();
void initNetworkConfigTab();
void loadParams();
void loadHandEyeCalibConfig();
void loadNetworkConfig();
bool saveParams();
void resetParams();
void setDoubleEditorText(QLineEdit* edit, double value);
void setIntEditorText(QLineEdit* edit, int value);
bool tryGetDouble(QLineEdit* edit, const QString& label, double& value);
bool tryGetInt(QLineEdit* edit, const QString& label, int& value);
private:
Ui::DialogAlgoArg *ui = nullptr;
TireHolePosePresenter* m_presenter = nullptr;
HandEyeCalibWidget* m_handEyeCalibWidget = nullptr;
NetworkConfigWidget* m_networkConfigWidget = nullptr;
// 轮胎参数编辑器(动态创建在独立 Tab 页中)
QLineEdit* m_editTireDiameter = nullptr;
QLineEdit* m_editTireThickness = nullptr;
};
#endif // DIALOGALGOARG_H