#ifndef CALIBVIEWMAINWINDOW_H #define CALIBVIEWMAINWINDOW_H #include #include #include #include #include #include #include #include "IHandEyeCalib.h" class CalibDataWidget; class CalibResultWidget; class MainWindow; // RobotView::MainWindow class VrEyeViewWidget; /** * @brief 手眼标定测试工具主窗口 * 用于测试 HandEyeCalib 模块的各项功能 */ class CalibViewMainWindow : public QMainWindow { Q_OBJECT public: explicit CalibViewMainWindow(QWidget* parent = nullptr); ~CalibViewMainWindow() override; signals: /** * @brief 标定完成信号 */ void calibrationCompleted(const HECCalibResult& result); private slots: /** * @brief 执行 Eye-To-Hand 标定 */ void onEyeToHandCalib(); /** * @brief 执行 Eye-In-Hand 标定 */ void onEyeInHandCalib(); /** * @brief 执行坐标变换测试 */ void onTransformTest(); /** * @brief 执行欧拉角转换测试 */ void onEulerTest(); /** * @brief 执行 TCP 标定 */ void onTCPCalib(); /** * @brief 清除所有数据 */ void onClearAll(); /** * @brief 保存标定结果 */ void onSaveResult(); /** * @brief 加载标定结果 */ void onLoadResult(); /** * @brief 打开 RobotView 窗口 */ void onOpenRobotView(); /** * @brief 接收 RobotView 的 TCP 位姿 */ void onRobotTcpPoseReceived(double x, double y, double z, double rx, double ry, double rz); /** * @brief 打开 VrEyeView 窗口 */ void onOpenVrEyeView(); /** * @brief 接收 VrEyeView 的标定板检测结果 */ void onChessboardDetected(double x, double y, double z, double rx, double ry, double rz); private: /** * @brief 初始化界面 */ void setupUI(); /** * @brief 创建菜单栏 */ void createMenuBar(); /** * @brief 创建右侧面板 */ QWidget* createRightPanel(); /** * @brief 更新状态栏 */ void updateStatusBar(const QString& message); /** * @brief 追加日志 */ void appendLog(const QString& message); // 标定实例 IHandEyeCalib* m_calib; // 数据输入控件 CalibDataWidget* m_dataWidget; // 结果显示控件 CalibResultWidget* m_resultWidget; // 右侧面板 - 坐标变换测试 QDoubleSpinBox* m_sbTransformX; QDoubleSpinBox* m_sbTransformY; QDoubleSpinBox* m_sbTransformZ; QPushButton* m_btnTransform; // 右侧面板 - 欧拉角转换测试 QDoubleSpinBox* m_sbRoll; QDoubleSpinBox* m_sbPitch; QDoubleSpinBox* m_sbYaw; QComboBox* m_cbEulerOrder; QPushButton* m_btnEulerConvert; // 右侧面板 - 日志 QTextEdit* m_logEdit; // 当前标定结果 HECCalibResult m_currentResult; bool m_hasResult; // RobotView 窗口实例 MainWindow* m_robotView; // VrEyeView 窗口实例 VrEyeViewWidget* m_vrEyeView; }; #endif // CALIBVIEWMAINWINDOW_H