/** * @file MainWindow.h * @brief 战场探索系统主控制界面定义 * @author CasualtySightPlus Team * @date 2024-01-01 * @version 2.0 * * 主控制界面类,提供战场探索系统的核心功能,包括: * - 统一设备管理(无人机+地面机器人) * - 地图显示控制 * - 探索任务管理 * - 实时状态监控 * - 智能导航系统 * * @note 依赖Qt GUI模块和快速控件模块 * @since 2.0 */ #ifndef MAINWINDOW_H #define MAINWINDOW_H // Qt核心头文件 #include #include #include #include #include // Qt控件头文件 #include #include #include #include #include // Qt其他模块 #include #include #include // 自定义模块头文件 #include "AudioModule/IntelligenceUI.h" #include "FaceLightModule/FaceLightControl.h" #include "ui/components/DeviceListPanel.h" #include "ui/components/SystemLogPanel.h" #include "ui/components/RightFunctionPanel.h" // 标准库头文件 #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE /** * @class MainWindow * @brief 战场探索系统主控制界面 * * 战场探索系统的主界面类,继承自QMainWindow。 * 提供完整的战场探索和管理功能,包括: * * 主要功能: * - UAV(无人机)设备管理和控制 * - 地面机器人设备管理和控制 * - 实时地图显示和位置标记 * - 人脸识别和自动跟踪 * - 智能导航和路径规划 * - 设备状态监控和管理 * * 界面特点: * - 军用风格的现代化界面设计 * - 支持多设备同时管理 * - 实时数据显示和更新 * - 直观的操作控制面板 * * @note 这是应用程序的主要用户界面 * @warning 使用前需要确保数据库连接正常 * @see UAVDatabase, DogDatabase * @since 2.0 */ class MainWindow : public QMainWindow { Q_OBJECT public: /** * @brief 构造函数 * @param parent 父窗口指针,默认为nullptr */ explicit MainWindow(QWidget *parent = nullptr); /** * @brief 析构函数 */ ~MainWindow(); /** * @brief 设置地图显示 */ void setupMapDisplay(); /** * @brief 添加设备到数据库 * @param deviceId 设备ID * @param name 设备名称 * @param type 设备类型 ("uav" 或 "dog") * @param ip IP地址 * @param port 端口号 * @param state 状态 (默认为0) * @param longitude 经度 (默认为0.0) * @param latitude 纬度 (默认为0.0) * @return 是否成功 */ bool addDeviceToDatabase(const QString &deviceId, const QString &name, const QString &type, const QString &ip, int port, int state = 0, double longitude = 0.0, double latitude = 0.0); /** * @brief 地图显示控制 * @param button 控制按钮指针 * @param widget 显示控件指针 * @param layout 布局指针 */ void mapDisplayControl(QPushButton *button, QWidget *widget, QGridLayout *layout); /** * @brief 添加机器人按钮控制 * @param button 控制按钮指针 */ void addRobotControl(QPushButton *button); /** * @brief 显示已配置机器人列表按钮控制 * @param button 控制按钮指针 */ void robotsInfosControl(QPushButton *button); public slots: /** * @brief 添加机器人按钮点击槽函数 */ void onAddRobotClicked(); /** * @brief 机器人列表显示按钮点击槽函数 */ void onRobotTabClicked(); /** * @brief 切换到指定机器人页面槽函数 */ void onSpecifiedRobotTabClicked(); private slots: /** * @brief 添加无人机按钮点击槽函数 */ void onAddUAVClicked(); /** * @brief 无人机标签页点击槽函数 */ void onUAVTabClicked(); /** * @brief 机器人位置按钮点击槽函数 */ void onRobotLocationClicked(); /** * @brief 无人机视图按钮点击槽函数 */ void onUAVViewClicked(); /** * @brief 机器人视图按钮点击槽函数 */ void onRobotViewClicked(); /** * @brief 机器人地图绘制按钮点击槽函数 */ void onRobotMappingClicked(); /** * @brief 智能导航按钮点击槽函数 */ void onSmartNavigationClicked(); /** * @brief 情报传达按钮点击槽函数 */ void onIntelligenceClicked(); /** * @brief FaceLight控制按钮点击槽函数 */ void onFaceLightClicked(); /** * @brief 设备选中槽函数 * @param deviceId 设备ID */ void onDeviceSelected(const QString &deviceId); /** * @brief 设备控制请求槽函数 * @param deviceId 设备ID */ void onDeviceControlRequested(const QString &deviceId); /** * @brief 设备定位请求槽函数 * @param deviceId 设备ID */ void onDeviceLocationRequested(const QString &deviceId); /** * @brief 设备详情请求槽函数 * @param deviceId 设备ID */ void onDeviceDetailsRequested(const QString &deviceId); /** * @brief 添加设备请求槽函数 * @param deviceType 设备类型 */ void onAddDeviceRequested(const QString &deviceType); private slots: // 右侧功能面板信号处理槽函数 /** * @brief 开始自主建图槽函数 */ void onStartMapping(); /** * @brief 停止自主建图槽函数 */ void onStopMapping(); /** * @brief 开始导航避障槽函数 */ void onStartNavigation(); /** * @brief 停止导航避障槽函数 */ void onStopNavigation(); /** * @brief 开始照片传输槽函数 */ void onStartPhotoTransmission(); /** * @brief 停止照片传输槽函数 */ void onStopPhotoTransmission(); /** * @brief 开始人物识别槽函数 */ void onStartPersonRecognition(); /** * @brief 停止人物识别槽函数 */ void onStopPersonRecognition(); /** * @brief 刷新敌情统计槽函数 */ void onRefreshEnemyStats(); /** * @brief 请求AI分析槽函数 */ void onRequestAIAnalysis(); /** * @brief 导出报告槽函数 */ void onExportReport(); private: /** * @brief 初始化UI界面 */ void setupUI(); /** * @brief 设置设备列表面板 */ void setupDeviceListPanel(); /** * @brief 设置系统日志面板和左侧面板分割器 */ void setupSystemLogPanel(); /** * @brief 设置右侧功能面板 */ void setupRightFunctionPanel(); /** * @brief 连接信号和槽 */ void connectSignals(); /** * @brief 设置窗口样式 */ void setupStyle(); /** * @brief 设置菜单栏样式 */ void setupMenuBarStyle(); /** * @brief 设置状态栏样式 */ void setupStatusBarStyle(); /** * @brief 初始化地图上的设备标记 */ void initializeDeviceMarkersOnMap(); /** * @brief 初始化现代样式管理器 */ void initializeModernStyles(); private: Ui::MainWindow *m_ui; ///< UI界面指针 IntelligenceUI *m_intelligenceUI; ///< 情报传达界面指针 FaceLightControl *m_faceLightControl; ///< 面部灯光控制界面指针 DeviceListPanel *m_deviceListPanel; ///< 设备列表面板组件 SystemLogPanel *m_systemLogPanel; ///< 系统日志面板组件 RightFunctionPanel *m_rightFunctionPanel; ///< 右侧功能面板组件 QSplitter *m_leftPanelSplitter; ///< 左侧面板分割器 QVector> m_robotList; ///< 机器人列表(名称-IP地址对) QVector> m_uavList; ///< 无人机列表(名称-IP地址对) // 人脸识别相关成员变量已移除(功能暂未实现) }; #endif // MAINWINDOW_H