项目结构修改后的编译问题修复

main
123 4 days ago
parent 35a3a44b32
commit 89fcac279e

@ -0,0 +1,467 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JT-101 战场探索系统</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" />
<link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js"></script>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#0a2463',
secondary: '#1e3a8a',
accent: '#ff7d00',
success: '#3dd598',
warning: '#ffbe0b',
danger: '#e63946',
dark: '#051937',
'dark-light': '#112140'
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
}
}
}
</script>
<style type="text/tailwindcss">
@layer utilities {
.content-auto {
content-visibility: auto;
}
.scrollbar-thin {
scrollbar-width: thin;
}
.scrollbar-thin::-webkit-scrollbar {
width: 4px;
}
.scrollbar-thin::-webkit-scrollbar-thumb {
background-color: rgba(156, 163, 175, 0.5);
border-radius: 2px;
}
.device-card {
@apply bg-dark-light rounded-lg p-3 mb-2 transition-all duration-300 hover:bg-secondary/50 border border-gray-700/50;
}
.status-indicator {
@apply w-2 h-2 rounded-full inline-block mr-2;
}
.btn-primary {
@apply bg-accent hover:bg-accent/80 text-white font-medium py-2 px-4 rounded transition-all duration-300;
}
.tab-active {
@apply border-b-2 border-accent text-white;
}
.tab-inactive {
@apply border-b-2 border-transparent text-gray-400 hover:text-gray-300;
}
}
</style>
</head>
<body class="bg-dark text-gray-200 h-screen flex flex-col overflow-hidden">
<!-- 顶部导航栏 -->
<header class="bg-primary/80 backdrop-blur-sm border-b border-gray-700/50 px-4 py-2 flex justify-between items-center">
<div class="flex items-center space-x-4">
<button class="text-gray-300 hover:text-white transition-colors">
<i class="fa fa-bars text-xl"></i>
</button>
<h1 class="text-xl font-bold text-white">JT-101 战场探索系统</h1>
<div class="hidden md:flex space-x-6 ml-8">
<button class="text-sm hover:text-white transition-colors">任务</button>
<button class="text-sm hover:text-white transition-colors">设置</button>
</div>
</div>
<div class="flex items-center space-x-4">
<button class="bg-dark-light hover:bg-secondary text-sm py-1 px-3 rounded flex items-center transition-colors">
<i class="fa fa-power-off mr-2"></i>电源
</button>
<button class="bg-dark-light hover:bg-secondary text-sm py-1 px-3 rounded flex items-center transition-colors">
<i class="fa fa-refresh mr-2"></i>同步
</button>
<button class="bg-dark-light hover:bg-secondary text-sm py-1 px-3 rounded flex items-center transition-colors relative">
<i class="fa fa-bell mr-2"></i>警报
<span class="absolute -top-1 -right-1 bg-danger text-white text-xs rounded-full w-4 h-4 flex items-center justify-center">1</span>
</button>
<div class="hidden md:flex items-center space-x-2 ml-6">
<button class="bg-dark-light hover:bg-secondary text-sm py-1 px-3 rounded transition-colors">标准视图</button>
<button class="bg-dark-light hover:bg-secondary text-sm py-1 px-3 rounded transition-colors">全屏视图</button>
</div>
<div class="ml-4 flex items-center">
<span class="text-success flex items-center text-sm">
<i class="fa fa-circle mr-1 text-xs"></i>系统正常运行中
</span>
</div>
</div>
</header> <!-- 主内容区 -->
<main class="flex flex-1 overflow-hidden">
<!-- 左侧设备管理面板 -->
<aside class="w-64 bg-dark-light border-r border-gray-700/50 flex flex-col">
<div class="p-3 border-b border-gray-700/50">
<h2 class="font-bold text-lg mb-2">设备管理</h2>
<button class="w-full btn-primary flex items-center justify-center">
<i class="fa fa-plus mr-2"></i>添加设备
</button>
</div>
<div class="flex-1 overflow-y-auto p-2 scrollbar-thin">
<!-- 无人机设备 -->
<div class="device-card">
<div class="flex items-start">
<div class="text-blue-400 mr-3 mt-1">
<i class="fa fa-plane text-xl"></i>
</div>
<div class="flex-1">
<div class="flex justify-between">
<h3 class="font-medium text-white">侦察机-01</h3>
<span class="text-xs bg-success/20 text-success px-2 py-0.5 rounded-full">在线</span>
</div>
<p class="text-xs text-gray-400 mt-1">IP: 192.168.1.101</p>
<p class="text-xs text-gray-400">N39.90, E116.40</p>
<div class="mt-2 flex items-center">
<span class="text-xs text-gray-400 mr-2">信号:</span>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="bg-success h-1.5 rounded-full" style="width: 90%"></div>
</div>
</div>
</div>
</div>
</div>
<!-- 机器狗设备 -->
<div class="device-card">
<div class="flex items-start">
<div class="text-green-400 mr-3 mt-1">
<i class="fa fa-paw text-xl"></i>
</div>
<div class="flex-1">
<div class="flex justify-between">
<h3 class="font-medium text-white">探测狗-02</h3>
<span class="text-xs bg-warning/20 text-warning px-2 py-0.5 rounded-full">信号弱</span>
</div>
<p class="text-xs text-gray-400 mt-1">IP: 192.168.1.102</p>
<p class="text-xs text-gray-400">N39.91, E116.41</p>
<div class="mt-2 flex items-center">
<span class="text-xs text-gray-400 mr-2">信号:</span>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="bg-warning h-1.5 rounded-full" style="width: 40%"></div>
</div>
</div>
</div>
</div>
</div>
<!-- 离线设备 -->
<div class="device-card opacity-70">
<div class="flex items-start">
<div class="text-gray-400 mr-3 mt-1">
<i class="fa fa-plane text-xl"></i>
</div>
<div class="flex-1">
<div class="flex justify-between">
<h3 class="font-medium text-gray-400">侦察机-03</h3>
<span class="text-xs bg-gray-700 text-gray-400 px-2 py-0.5 rounded-full">离线</span>
</div>
<p class="text-xs text-gray-500 mt-1">IP: 192.168.1.103</p>
<p class="text-xs text-gray-500">N39.92, E116.39</p>
<div class="mt-2 flex items-center">
<span class="text-xs text-gray-500 mr-2">信号:</span>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="bg-gray-500 h-1.5 rounded-full" style="width: 0%"></div>
</div>
</div>
</div>
</div>
</div>
<!-- 机器狗设备 -->
<div class="device-card">
<div class="flex items-start">
<div class="text-green-400 mr-3 mt-1">
<i class="fa fa-paw text-xl"></i>
</div>
<div class="flex-1">
<div class="flex justify-between">
<h3 class="font-medium text-white">探测狗-04</h3>
<span class="text-xs bg-success/20 text-success px-2 py-0.5 rounded-full">在线</span>
</div>
<p class="text-xs text-gray-400 mt-1">IP: 192.168.1.104</p>
<p class="text-xs text-gray-400">N39.89, E116.42</p>
<div class="mt-2 flex items-center">
<span class="text-xs text-gray-400 mr-2">信号:</span>
<div class="w-full bg-gray-700 rounded-full h-1.5">
<div class="bg-success h-1.5 rounded-full" style="width: 75%"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</aside>
<!-- 中央地图区域 -->
<section class="flex-1 relative">
<div id="map" class="w-full h-full"></div>
<!-- 地图控制按钮 -->
<div class="absolute bottom-4 left-4 bg-dark-light/80 backdrop-blur-sm rounded-lg p-2 border border-gray-700/50 flex space-x-2">
<button class="bg-secondary text-white px-3 py-1 text-sm rounded">标准</button>
<button class="bg-dark-light hover:bg-secondary px-3 py-1 text-sm rounded transition-colors">卫星</button>
<button class="bg-dark-light hover:bg-secondary px-3 py-1 text-sm rounded transition-colors">地形</button>
</div>
<!-- 地图缩放控制 -->
<div class="absolute top-4 right-4 bg-dark-light/80 backdrop-blur-sm rounded-lg border border-gray-700/50 flex flex-col">
<button class="w-8 h-8 flex items-center justify-center hover:bg-secondary transition-colors border-b border-gray-700/50">
<i class="fa fa-plus"></i>
</button>
<button class="w-8 h-8 flex items-center justify-center hover:bg-secondary transition-colors">
<i class="fa fa-minus"></i>
</button>
<button class="w-8 h-8 flex items-center justify-center hover:bg-secondary transition-colors border-t border-gray-700/50">
<i class="fa fa-location-arrow"></i>
</button>
</div>
</section>
<!-- 右侧功能面板 -->
<aside class="w-80 bg-dark-light border-l border-gray-700/50 flex flex-col">
<!-- 功能标签页 -->
<div class="flex border-b border-gray-700/50">
<button class="flex-1 py-3 text-sm font-medium tab-inactive">战场探索</button>
<button class="flex-1 py-3 text-sm font-medium tab-active">情报传输</button>
<button class="flex-1 py-3 text-sm font-medium tab-inactive">敌情统计</button>
<button class="flex-1 py-3 text-sm font-medium tab-inactive">实时情报</button>
</div>
<!-- 情报传输面板 -->
<div class="flex-1 overflow-y-auto p-4 scrollbar-thin">
<div class="text-center mb-6">
<div class="w-24 h-24 bg-danger/20 rounded-full flex items-center justify-center mx-auto mb-2">
<i class="fa fa-microphone text-3xl text-danger"></i>
</div>
<p class="text-sm text-gray-400">按住说话</p>
</div>
<div class="mb-4">
<div class="flex justify-between items-center mb-2">
<span class="text-sm text-gray-400">音量</span>
<span class="text-sm text-gray-400">80%</span>
</div>
<input type="range" min="0" max="100" value="80" class="w-full accent-accent h-1.5">
</div>
<h3 class="text-sm font-medium mb-3 mt-6">最近通话</h3>
<div class="space-y-3">
<div class="bg-primary/30 p-3 rounded-lg hover:bg-primary/50 transition-colors cursor-pointer">
<div class="flex justify-between">
<span class="font-medium text-white">指挥中心</span>
<span class="text-xs text-gray-400">05:23</span>
</div>
<p class="text-xs text-gray-400 mt-1">今天 09:45</p>
</div>
<div class="bg-primary/30 p-3 rounded-lg hover:bg-primary/50 transition-colors cursor-pointer">
<div class="flex justify-between">
<span class="font-medium text-white">侦察小队A</span>
<span class="text-xs text-gray-400">02:47</span>
</div>
<p class="text-xs text-gray-400 mt-1">今天 08:12</p>
</div>
<div class="bg-primary/30 p-3 rounded-lg hover:bg-primary/50 transition-colors cursor-pointer">
<div class="flex justify-between">
<span class="font-medium text-white">火力支援单位</span>
<span class="text-xs text-gray-400">08:15</span>
</div>
<p class="text-xs text-gray-400 mt-1">昨天 16:30</p>
</div>
</div>
</div>
</aside>
</main>
<!-- 底部状态栏 -->
<footer class="bg-primary/80 backdrop-blur-sm border-t border-gray-700/50 px-4 py-2 text-xs flex justify-between items-center">
<div class="flex space-x-6">
<div class="flex items-center">
<i class="fa fa-wifi text-success mr-2"></i>
<span>连接状态: 正常</span>
</div>
<div class="flex items-center">
<i class="fa fa-sync text-blue-400 mr-2"></i>
<span>数据同步: 最新</span>
</div>
<div class="flex items-center">
<i class="fa fa-clock-o text-gray-400 mr-2"></i>
<span id="system-time">系统时间: 2023-11-15 14:30:45</span>
</div>
</div>
<div class="flex space-x-6">
<div class="flex items-center">
<i class="fa fa-microchip text-gray-400 mr-2"></i>
<span>CPU: 35%</span>
</div>
<div class="flex items-center">
<i class="fa fa-memory text-gray-400 mr-2"></i>
<span>内存: 42%</span>
</div>
<div class="flex items-center">
<i class="fa fa-user text-gray-400 mr-2"></i>
<span>操作员: Admin</span>
</div>
</div>
</footer>
<!-- 实时情报侧边栏 (默认隐藏) -->
<div id="intelligence-panel" class="fixed top-0 right-0 h-full w-80 bg-dark-light transform translate-x-full transition-transform duration-300 ease-in-out border-l border-gray-700/50 z-50">
<div class="p-3 border-b border-gray-700/50 flex justify-between items-center">
<h2 class="font-bold text-lg">实时情报 & 日志</h2>
<button id="close-intel-panel" class="text-gray-400 hover:text-white">
<i class="fa fa-times"></i>
</button>
</div>
<div class="p-3">
<div class="bg-danger/20 text-danger p-3 rounded-lg mb-4 flex items-start">
<i class="fa fa-exclamation-triangle mt-1 mr-2"></i>
<div>
<p class="font-medium">系统警报: 1</p>
<p class="text-xs mt-1">探测狗-02 信号强度较低</p>
</div>
</div>
<div class="space-y-2 max-h-[calc(100vh-180px)] overflow-y-auto scrollbar-thin">
<div class="text-danger text-sm">
<span class="text-gray-400">[14:30:50]</span> 识别到敌情! 坐标 [116.39, 39.91]
</div>
<div class="text-blue-400 text-sm">
<span class="text-gray-400">[14:30:48]</span> 无人机-01 已拍摄照片 [IMG_0255.JPG]
</div>
<div class="text-warning text-sm">
<span class="text-gray-400">[14:30:12]</span> 机器狗-A 信号强度较低
</div>
<div class="text-gray-300 text-sm">
<span class="text-gray-400">[14:29:55]</span> 机器狗-A 已到达指定导航点
</div>
<div class="text-gray-300 text-sm">
<span class="text-gray-400">[14:28:40]</span> 无人机-01 起飞成功,高度 50m
</div>
<div class="text-gray-300 text-sm">
<span class="text-gray-400">[14:27:15]</span> 系统同步完成,数据更新至最新
</div>
<div class="text-gray-300 text-sm">
<span class="text-gray-400">[14:25:30]</span> 探测狗-04 开始自主建图
</div>
<div class="text-gray-300 text-sm">
<span class="text-gray-400">[14:20:10]</span> 与指挥中心建立语音连接
</div>
</div>
</div>
</div>
<script>
// 初始化地图
const map = L.map('map').setView([39.9042, 116.4074], 15); // 默认北京坐标
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// 自定义设备图标
const droneIcon = L.icon({
iconUrl: 'https://cdn-icons-png.flaticon.com/512/1637/1637445.png',
iconSize: [32, 32],
iconAnchor: [16, 16]
});
const robotDogIcon = L.icon({
iconUrl: 'https://cdn-icons-png.flaticon.com/512/616/616559.png',
iconSize: [32, 32],
iconAnchor: [16, 16]
});
const enemyIcon = L.icon({
iconUrl: 'https://cdn-icons-png.flaticon.com/512/616/616559.png',
iconSize: [36, 36],
iconAnchor: [18, 18]
});
// 添加设备标记
L.marker([39.90, 116.40], {icon: droneIcon}).addTo(map)
.bindPopup('<b>侦察机-01</b><br>在线 - 飞行中').openPopup();
L.marker([39.91, 116.41], {icon: robotDogIcon}).addTo(map)
.bindPopup('<b>探测狗-02</b><br>在线 - 信号弱');
L.marker([39.89, 116.42], {icon: robotDogIcon}).addTo(map)
.bindPopup('<b>探测狗-04</b><br>在线 - 待命');
// 添加敌人标记
L.marker([39.905, 116.395], {icon: enemyIcon}).addTo(map)
.bindPopup('<b>敌军位置</b><br>坐标: [116.39, 39.91]<br>最后更新: 14:30:50');
// 更新系统时间
function updateSystemTime() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
document.getElementById('system-time').textContent =
`系统时间: ${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
setInterval(updateSystemTime, 1000);
updateSystemTime();
// 标签页切换功能
const tabs = document.querySelectorAll('.tab-inactive, .tab-active');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
// 移除所有标签页的active状态
document.querySelectorAll('.tab-active').forEach(activeTab => {
activeTab.classList.remove('tab-active');
activeTab.classList.add('tab-inactive');
});
// 设置当前标签页为active
tab.classList.remove('tab-inactive');
tab.classList.add('tab-active');
// 如果点击的是"实时情报"标签,显示侧边栏
if (tab.textContent.trim() === '实时情报') {
document.getElementById('intelligence-panel').classList.remove('translate-x-full');
}
});
});
// 关闭实时情报面板
document.getElementById('close-intel-panel').addEventListener('click', () => {
document.getElementById('intelligence-panel').classList.add('translate-x-full');
// 重置标签页状态
tabs.forEach(tab => {
if (tab.textContent.trim() === '情报传输') {
tab.classList.remove('tab-inactive');
tab.classList.add('tab-active');
} else if (tab.textContent.trim() === '实时情报') {
tab.classList.remove('tab-active');
tab.classList.add('tab-inactive');
}
});
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,255 @@
我现在有一个软件项目是基于无人机和机器狗的“战场探索系统”我作为项目的前端主要负责人我使用的是QT来编写前端便于与硬件设备进行交互现在我需要进行前端界面的设计。
功能模块设备管理模块1.添加无人机和机器狗包括名称、ip、位置经纬度2.无人设备管理,列出存在的设备
显示地图模块:现在所处学校位置的地图,可以通过无人设备管理显示设备在地图上的位置
战场探索模块机器狗方向的1.自主建图2.导航避障 无人机方向的1.传输无人机拍摄的照片 2.根据照片进行人物识别,在地图标出敌人位置
情报传输模块:通过机器狗与友军进行语音传输,进行通话(暂时一个功能)
敌情统计模块:在地图上显示已经侦查到的敌军,进行可视化展示,并可以接入大模型进行敌情分析。
上述是我的项目的基础内容我现在需要进行界面设计但是我没有头绪而且QT还需要做的好看一点不然的话老师不喜欢我的分数就不好看你能不能帮我进行设计求求了
Gmini2.5:
第一步:确立整体设计理念与风格
为了摆脱传统Qt的“朴素”感我们需要一个明确的设计风格。
设计理念: “现代战术指挥中心” (Modern Tactical Command Center)
核心关键词: 科技感、信息清晰、沉浸式、模块化、深色系。
灵感来源: 科幻电影中的指挥界面如《钢铁侠》中的J.A.R.V.I.S.、《流浪地球》的MOSS、现代军事软件、数据可视化大屏。
色彩方案(深色主题):
主背景: 深邃蓝(#0A192F或碳素灰#1D232A可以有效降低视觉疲劳并让高亮信息更突出。
主面板/容器: 半透明的深灰色(#2A3649带有一点模糊效果毛玻璃效果增加层次感。
高亮/交互色: 科技蓝(#00BFFF或赛博绿#39FF14用于按钮、图标、选中状态和关键数据。
警告/危险色: 警示橙(#FFA500和紧急红#FF4500用于标记敌军、设备离线或危险区域。
字体:
英文/数字: Roboto, Montserrat 或 Exo 2这些是无衬线字体清晰且有科技感。
中文: 思源黑体 (Source Han Sans) 或 阿里巴巴普惠体,确保中文字符的清晰易读。
第二步:主窗口宏观布局设计
我们采用一个经典的多面板布局,将信息高效地组织在一起。
主窗口布局图 (Conceptual Layout):
+--------------------------------------------------------------------------------+
| [标题栏:战场探索系统 V1.0] [系统时间] [窗口控制按钮] |
+--------------------------------------------------------------------------------+
| [A: 设备管理与控制面板] | [B: 主地图显示区域] |
| (Device & Control) | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
|-----------------------| |
| [C: 实时情报与日志流] | |
| (Live Feed & Logs) | |
| | |
+--------------------------------------------------------------------------------+
| [D: 状态栏] [GPS信号] [网络状态] [当前操作员] |
+--------------------------------------------------------------------------------+
区域 A (左侧):设备管理与控制面板 - 这是操作的核心区域。
区域 B (中右):主地图显示区域 - 这是信息展示的核心,占据最大空间。
区域 C (左下):实时情报与日志流 - 显示系统事件、无人设备传回的即时信息。
区域 D (底部):状态栏 - 提供全局状态信息。
第三步:各功能模块的详细界面设计
现在我们来详细设计每个模块在界面上的呈现方式。
1. 设备管理模块 (位于区域 A)
这个模块使用一个可切换的Tab Widget来组织。
Tab 1: 设备列表 (Unit List)
形式: 一个QTreeView或QListView显示所有已添加的无人设备。
每项内容:
图标: 无人机 / 机器狗的图标。
名称: "侦察无人机-01", "先锋机器狗-A"。
状态指示灯: 绿色(在线)、灰色(离线)、红色(故障/电量低)。
电量条: 一个小型的进度条显示剩余电量。
交互:
单击: 在地图上高亮并居中该设备,同时在下方的“控制面板”显示该设备的操作选项。
右键菜单: "查看详情"、"在地图上定位"、"删除设备"。
底部按钮: [ + 添加新设备 ] 按钮,点击后弹出添加对话框。
添加新设备对话框 (Popup Dialog)
类型选择: [无人机] / [机器狗] (Radio Button)。
设备名称: QLineEdit (输入框)。
设备 IP 地址: QLineEdit (可带IP地址格式验证)。
初始位置:
经度 (Longitude): QDoubleSpinBox例如 $116.397128^\circ$。
纬度 (Latitude): QDoubleSpinBox例如 $39.916527^\circ$。
或者提供一个“在地图上拾取”按钮,让用户直接在地图上点击选择位置。
按钮: [ 确定 ] [ 取消 ]。
2. 地图显示模块 (位于区域 B)
这是系统的“脸面”,一定要做好。
地图源: 可以使用在线地图如天地图、高德地图的API或离线地图瓦片。对于学校内部使用一张高精度的卫星图或平面图作为底图更佳。
设备标记:
图标: 使用有方向指示的SVG或PNG图标例如一个带箭头的无人机图标图标方向可以根据设备朝向实时更新。
光环效果: 选中的设备图标外可以有一个动态的、呼吸式光环(科技蓝色),非常酷炫。
信息标签: 鼠标悬停Hover在设备上时显示一个半透明的信息框包含名称、坐标、速度、电量等。
敌情标记:
使用醒目的红色图标(如准星、骷髅头)。
点击敌情图标,可以弹出详情,显示发现时间、来源设备、相关照片等。
地图控件:
缩放: [ + ] [ - ] 按钮和鼠标滚轮。
图层切换: "卫星图" / "街道图" / "地形图"。
工具栏: "测距"、"区域选择"、"标记"等工具。
3. 战场探索模块 (控制部分位于区域 A结果在区域 B/C 展示)
当在设备列表中选中一个设备后区域A的下半部分会变成该设备的专属控制面板。
选中“先锋机器狗-A”后
状态显示: "模式: 待机", "当前任务: 无"。
控制按钮组 1 (建图与导航):
[ 开始自主建图 ]: 点击后按钮变为“停止建图”并在地图上实时绘制机器狗探索到的SLAM地图可以用半透明的灰色或绿色图层叠加在主地图上
[ 启动导航避障 ]: 激活后,可以在地图上右键设置目标点,机器狗会自动规划路径并前往。路径可以在地图上用动态线条画出。
控制按钮组 2 (情报传输):
[ 建立语音通话 ]: 点击后,弹出一个小的通话窗口,显示“正在与友军通话...”,并有静音和挂断按钮。
选中“侦察无人机-01”后
状态显示: "飞行高度: 50m", "相机状态: 正常"。
控制按钮组 1 (飞行与侦察):
[ 自动起飞/返航 ]
[ 开始航线侦察 ] (如果实现了预设航线功能)
[ 拍照 ]
控制按钮组 2 (图像情报):
这个区域会变成一个照片流(一个横向滚动的缩略图列表),显示无人机传输回来的照片。
交互:
点击缩略图,在弹窗或专用区域显示高清大图。
大图下方有按钮 [ AI识别人物 ]。
点击识别后,图片上会用矩形框标出识别到的人物,旁边显示置信度。
对于识别出的每个人物框,旁边都有一个按钮 [ 标记为敌军 ],点击后直接在主地图上对应的位置创建一个敌情标记。
4. 情报传输模块
如上所述,该功能集成在机器狗的控制面板中。
5. 敌情统计与分析模块 (可作为区域 A 的一个Tab或独立的弹出式仪表盘)
Tab 3: 敌情态势 (Situation Awareness)
列表形式: 一个详细的表格 (QTableView),列出所有已发现的敌军。
列: 编号、发现时间、坐标、来源设备、状态(已确认/未确认)。
交互: 点击表格行,地图上对应的敌情标记会高亮闪烁。
可视化图表: 使用QtCharts模块。
一个饼图,显示不同区域的敌军数量分布。
一个时间序列折线图,显示单位时间内新发现敌情的数量趋势。
大模型分析接口:
一个醒目的按钮 [ 启动AI敌情分析 ]。
点击后可以将当前所有敌情数据位置、时间、数量打包发送给大模型API。
返回的结果显示在一个只读的文本框中例如“分析报告当前敌情主要集中在教学楼A座南侧呈散兵线分布推测可能为敌方侦察小队。建议派遣机器狗进行近距离确认。”
第四步Qt 实现建议与技巧
为了实现上述“好看”的设计你需要用到一些现代Qt的特性
UI开发方式 强烈建议使用 QML 而不是传统的QtWidgets。QML天生就适合做这种流畅、美观、动态的现代化界面。它的语法类似JSON可以让你像写前端网页一样构建UI并且能方便地实现动画、渐变、模糊等效果。
样式定制: 如果坚持使用QtWidgets请深度使用 QSS (Qt Style Sheets)。你可以把它当成CSS来用通过编写样式表文件可以完全重定义所有控件的外观实现我们设计的深色主题和科技感元素。
地图实现:
Qt Location 和 QtPositioning 模块提供了地图相关的API可以结合 QML 的 MapView 来快速实现地图功能。
如果需要更高的自定义度可以使用QGraphicsView框架。把地图底图作为背景无人机、敌军等作为QGraphicsItem这样你可以完全控制它们的绘制、动画和交互。
无边框窗口: 为了达到完全的沉浸感,可以创建一个无边框窗口 (FramelessWindowHint)然后自己用QML或QWidget绘制标题栏和控制按钮。
图标库: 使用矢量图标SVG因为它们可以无损缩放。推荐一些图标库如 Font Awesome, Material Design Icons找到符合科技战术风格的图标。
性能优化: 地图上动态元素很多时注意性能。例如只重绘变化的区域使用硬件加速OpenGL在非必要时不更新UI。
总结与操作流程
搭建框架: 使用QML或QtWidgets搭建出主窗口的四区域宏观布局。
美化外观: 应用深色主题。如果是QML通过Rectangle的color和gradient属性如果是QtWidgets编写并加载QSS样式表。
逐个实现模块:
先做最简单的设备管理,实现列表和添加功能。
然后攻克核心的地图模块,让设备能在地图上显示出来。
接着开发各个设备的专属控制面板,连接后端逻辑。
最后完成敌情统计和AI分析的展示界面。
添加亿点点细节: 加入平滑的动画过渡、动态光效、声音提示等,让整个系统的交互体验提升一个档次。
这个设计方案应该能给你一个非常清晰的蓝图了。你可以根据这个方案开始你的前端开发工作,相信做出来的成品一定会让你的老师和同学都感到惊艳!祝你项目顺利,高分通过!加油!

@ -22,7 +22,6 @@ RCC_DIR = build
# Source files - 按模块组织 # Source files - 按模块组织
SOURCES += \ SOURCES += \
src/main.cpp \ src/main.cpp \
src/qrc_res.cpp \
src/core/database/UAVDatabase.cpp \ src/core/database/UAVDatabase.cpp \
src/core/database/DogDatabase.cpp \ src/core/database/DogDatabase.cpp \
src/ui/main/MainWindow.cpp \ src/ui/main/MainWindow.cpp \
@ -32,7 +31,8 @@ SOURCES += \
HEADERS += \ HEADERS += \
include/core/database/UAVDatabase.h \ include/core/database/UAVDatabase.h \
include/core/database/DogDatabase.h \ include/core/database/DogDatabase.h \
include/ui/main/MainWindow.h include/ui/main/MainWindow.h \
include/ui/dialogs/DeviceDialog.h
# UI forms - 按模块组织 # UI forms - 按模块组织
FORMS += \ FORMS += \

@ -53,20 +53,20 @@ OBJECTS_DIR = build/
####### Files ####### Files
SOURCES = src/main.cpp \ SOURCES = src/main.cpp \
src/qrc_res.cpp \
src/core/database/UAVDatabase.cpp \ src/core/database/UAVDatabase.cpp \
src/core/database/DogDatabase.cpp \ src/core/database/DogDatabase.cpp \
src/ui/main/MainWindow.cpp \ src/ui/main/MainWindow.cpp \
src/ui/dialogs/DeviceDialog.cpp build/qrc_res.cpp \ src/ui/dialogs/DeviceDialog.cpp build/qrc_res.cpp \
build/moc_MainWindow.cpp build/moc_MainWindow.cpp \
build/moc_DeviceDialog.cpp
OBJECTS = build/main.o \ OBJECTS = build/main.o \
build/qrc_res.o \
build/UAVDatabase.o \ build/UAVDatabase.o \
build/DogDatabase.o \ build/DogDatabase.o \
build/MainWindow.o \ build/MainWindow.o \
build/DeviceDialog.o \ build/DeviceDialog.o \
build/qrc_res.o \ build/qrc_res.o \
build/moc_MainWindow.o build/moc_MainWindow.o \
build/moc_DeviceDialog.o
DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
@ -161,8 +161,8 @@ DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
CasualtySightPlus_new.pro include/core/database/UAVDatabase.h \ CasualtySightPlus_new.pro include/core/database/UAVDatabase.h \
include/core/database/DogDatabase.h \ include/core/database/DogDatabase.h \
include/ui/main/MainWindow.h src/main.cpp \ include/ui/main/MainWindow.h \
src/qrc_res.cpp \ include/ui/dialogs/DeviceDialog.h src/main.cpp \
src/core/database/UAVDatabase.cpp \ src/core/database/UAVDatabase.cpp \
src/core/database/DogDatabase.cpp \ src/core/database/DogDatabase.cpp \
src/ui/main/MainWindow.cpp \ src/ui/main/MainWindow.cpp \
@ -383,8 +383,8 @@ distdir: FORCE
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/ $(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents res.qrc $(DISTDIR)/ $(COPY_FILE) --parents res.qrc $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents include/core/database/UAVDatabase.h include/core/database/DogDatabase.h include/ui/main/MainWindow.h $(DISTDIR)/ $(COPY_FILE) --parents include/core/database/UAVDatabase.h include/core/database/DogDatabase.h include/ui/main/MainWindow.h include/ui/dialogs/DeviceDialog.h $(DISTDIR)/
$(COPY_FILE) --parents src/main.cpp src/qrc_res.cpp src/core/database/UAVDatabase.cpp src/core/database/DogDatabase.cpp src/ui/main/MainWindow.cpp src/ui/dialogs/DeviceDialog.cpp $(DISTDIR)/ $(COPY_FILE) --parents src/main.cpp src/core/database/UAVDatabase.cpp src/core/database/DogDatabase.cpp src/ui/main/MainWindow.cpp src/ui/dialogs/DeviceDialog.cpp $(DISTDIR)/
$(COPY_FILE) --parents forms/main/MainWindow.ui forms/dialogs/DeviceDialog.ui $(DISTDIR)/ $(COPY_FILE) --parents forms/main/MainWindow.ui forms/dialogs/DeviceDialog.ui $(DISTDIR)/
@ -449,14 +449,19 @@ compiler_moc_predefs_clean:
build/moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp build/moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -O2 -std=gnu++1z -Wall -Wextra -dM -E -o build/moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp g++ -pipe -O2 -std=gnu++1z -Wall -Wextra -dM -E -o build/moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: build/moc_MainWindow.cpp compiler_moc_header_make_all: build/moc_MainWindow.cpp build/moc_DeviceDialog.cpp
compiler_moc_header_clean: compiler_moc_header_clean:
-$(DEL_FILE) build/moc_MainWindow.cpp -$(DEL_FILE) build/moc_MainWindow.cpp build/moc_DeviceDialog.cpp
build/moc_MainWindow.cpp: include/ui/main/MainWindow.h \ build/moc_MainWindow.cpp: include/ui/main/MainWindow.h \
build/moc_predefs.h \ build/moc_predefs.h \
/usr/lib/qt5/bin/moc /usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hzk/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hzk/Software_Architecture/src/Client -I/home/hzk/Software_Architecture/src/Client/include -I/home/hzk/Software_Architecture/src/Client/include/core -I/home/hzk/Software_Architecture/src/Client/include/ui -I/home/hzk/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/ui/main/MainWindow.h -o build/moc_MainWindow.cpp /usr/lib/qt5/bin/moc $(DEFINES) --include /home/hzk/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hzk/Software_Architecture/src/Client -I/home/hzk/Software_Architecture/src/Client/include -I/home/hzk/Software_Architecture/src/Client/include/core -I/home/hzk/Software_Architecture/src/Client/include/ui -I/home/hzk/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/ui/main/MainWindow.h -o build/moc_MainWindow.cpp
build/moc_DeviceDialog.cpp: include/ui/dialogs/DeviceDialog.h \
build/moc_predefs.h \
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/hzk/Software_Architecture/src/Client/build/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/hzk/Software_Architecture/src/Client -I/home/hzk/Software_Architecture/src/Client/include -I/home/hzk/Software_Architecture/src/Client/include/core -I/home/hzk/Software_Architecture/src/Client/include/ui -I/home/hzk/Software_Architecture/src/Client/AudioModule -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtQuickWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtMultimediaWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -I/usr/include/x86_64-linux-gnu/qt5/QtCharts -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtWebEngineCore -I/usr/include/x86_64-linux-gnu/qt5/QtQuick -I/usr/include/x86_64-linux-gnu/qt5/QtMultimedia -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtQmlModels -I/usr/include/x86_64-linux-gnu/qt5/QtWebChannel -I/usr/include/x86_64-linux-gnu/qt5/QtQml -I/usr/include/x86_64-linux-gnu/qt5/QtNetwork -I/usr/include/x86_64-linux-gnu/qt5/QtPositioning -I/usr/include/x86_64-linux-gnu/qt5/QtSql -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/13 -I/usr/include/x86_64-linux-gnu/c++/13 -I/usr/include/c++/13/backward -I/usr/lib/gcc/x86_64-linux-gnu/13/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include include/ui/dialogs/DeviceDialog.h -o build/moc_DeviceDialog.cpp
compiler_moc_objc_header_make_all: compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean: compiler_moc_objc_header_clean:
compiler_moc_source_make_all: compiler_moc_source_make_all:
@ -482,23 +487,24 @@ compiler_clean: compiler_rcc_clean compiler_moc_predefs_clean compiler_moc_heade
####### Compile ####### Compile
build/main.o: src/main.cpp build/main.o: src/main.cpp include/ui/main/MainWindow.h \
include/core/database/DogDatabase.h \
include/core/database/UAVDatabase.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/main.o src/main.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/main.o src/main.cpp
build/qrc_res.o: src/qrc_res.cpp build/UAVDatabase.o: src/core/database/UAVDatabase.cpp include/core/database/UAVDatabase.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/qrc_res.o src/qrc_res.cpp
build/UAVDatabase.o: src/core/database/UAVDatabase.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/UAVDatabase.o src/core/database/UAVDatabase.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/UAVDatabase.o src/core/database/UAVDatabase.cpp
build/DogDatabase.o: src/core/database/DogDatabase.cpp build/DogDatabase.o: src/core/database/DogDatabase.cpp include/core/database/DogDatabase.h \
include/core/database/UAVDatabase.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DogDatabase.o src/core/database/DogDatabase.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DogDatabase.o src/core/database/DogDatabase.cpp
build/MainWindow.o: src/ui/main/MainWindow.cpp include/ui/main/MainWindow.h \ build/MainWindow.o: src/ui/main/MainWindow.cpp include/ui/main/MainWindow.h \
build/ui_MainWindow.h build/ui_MainWindow.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/MainWindow.o src/ui/main/MainWindow.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/MainWindow.o src/ui/main/MainWindow.cpp
build/DeviceDialog.o: src/ui/dialogs/DeviceDialog.cpp build/DeviceDialog.o: src/ui/dialogs/DeviceDialog.cpp include/ui/dialogs/DeviceDialog.h \
build/ui_DeviceDialog.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DeviceDialog.o src/ui/dialogs/DeviceDialog.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/DeviceDialog.o src/ui/dialogs/DeviceDialog.cpp
build/qrc_res.o: build/qrc_res.cpp build/qrc_res.o: build/qrc_res.cpp
@ -507,6 +513,9 @@ build/qrc_res.o: build/qrc_res.cpp
build/moc_MainWindow.o: build/moc_MainWindow.cpp build/moc_MainWindow.o: build/moc_MainWindow.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_MainWindow.o build/moc_MainWindow.cpp $(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_MainWindow.o build/moc_MainWindow.cpp
build/moc_DeviceDialog.o: build/moc_DeviceDialog.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o build/moc_DeviceDialog.o build/moc_DeviceDialog.cpp
####### Install ####### Install
install_target: first FORCE install_target: first FORCE

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,95 @@
/****************************************************************************
** Meta object code from reading C++ file 'DeviceDialog.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.15)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../include/ui/dialogs/DeviceDialog.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'DeviceDialog.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.15. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_DeviceDialog_t {
QByteArrayData data[1];
char stringdata0[13];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_DeviceDialog_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_DeviceDialog_t qt_meta_stringdata_DeviceDialog = {
{
QT_MOC_LITERAL(0, 0, 12) // "DeviceDialog"
},
"DeviceDialog"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_DeviceDialog[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
0, 0, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
0 // eod
};
void DeviceDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
(void)_o;
(void)_id;
(void)_c;
(void)_a;
}
QT_INIT_METAOBJECT const QMetaObject DeviceDialog::staticMetaObject = { {
QMetaObject::SuperData::link<QDialog::staticMetaObject>(),
qt_meta_stringdata_DeviceDialog.data,
qt_meta_data_DeviceDialog,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *DeviceDialog::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *DeviceDialog::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_DeviceDialog.stringdata0))
return static_cast<void*>(this);
return QDialog::qt_metacast(_clname);
}
int DeviceDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QDialog::qt_metacall(_c, _id, _a);
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

@ -0,0 +1,164 @@
/****************************************************************************
** Meta object code from reading C++ file 'MainWindow.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.15)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
#include <memory>
#include "../include/ui/main/MainWindow.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qmetatype.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'MainWindow.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.15.15. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
QT_BEGIN_MOC_NAMESPACE
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
struct qt_meta_stringdata_MainWindow_t {
QByteArrayData data[13];
char stringdata0[235];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
qptrdiff(offsetof(qt_meta_stringdata_MainWindow_t, stringdata0) + ofs \
- idx * sizeof(QByteArrayData)) \
)
static const qt_meta_stringdata_MainWindow_t qt_meta_stringdata_MainWindow = {
{
QT_MOC_LITERAL(0, 0, 10), // "MainWindow"
QT_MOC_LITERAL(1, 11, 17), // "onAddRobotClicked"
QT_MOC_LITERAL(2, 29, 0), // ""
QT_MOC_LITERAL(3, 30, 17), // "onRobotTabClicked"
QT_MOC_LITERAL(4, 48, 26), // "onSpecifiedRobotTabClicked"
QT_MOC_LITERAL(5, 75, 15), // "onAddUAVClicked"
QT_MOC_LITERAL(6, 91, 15), // "onUAVTabClicked"
QT_MOC_LITERAL(7, 107, 22), // "onRobotLocationClicked"
QT_MOC_LITERAL(8, 130, 16), // "onUAVViewClicked"
QT_MOC_LITERAL(9, 147, 18), // "onRobotViewClicked"
QT_MOC_LITERAL(10, 166, 21), // "onRobotMappingClicked"
QT_MOC_LITERAL(11, 188, 24), // "onSmartNavigationClicked"
QT_MOC_LITERAL(12, 213, 21) // "onIntelligenceClicked"
},
"MainWindow\0onAddRobotClicked\0\0"
"onRobotTabClicked\0onSpecifiedRobotTabClicked\0"
"onAddUAVClicked\0onUAVTabClicked\0"
"onRobotLocationClicked\0onUAVViewClicked\0"
"onRobotViewClicked\0onRobotMappingClicked\0"
"onSmartNavigationClicked\0onIntelligenceClicked"
};
#undef QT_MOC_LITERAL
static const uint qt_meta_data_MainWindow[] = {
// content:
8, // revision
0, // classname
0, 0, // classinfo
11, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
0, // flags
0, // signalCount
// slots: name, argc, parameters, tag, flags
1, 0, 69, 2, 0x0a /* Public */,
3, 0, 70, 2, 0x0a /* Public */,
4, 0, 71, 2, 0x0a /* Public */,
5, 0, 72, 2, 0x08 /* Private */,
6, 0, 73, 2, 0x08 /* Private */,
7, 0, 74, 2, 0x08 /* Private */,
8, 0, 75, 2, 0x08 /* Private */,
9, 0, 76, 2, 0x08 /* Private */,
10, 0, 77, 2, 0x08 /* Private */,
11, 0, 78, 2, 0x08 /* Private */,
12, 0, 79, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
0 // eod
};
void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
auto *_t = static_cast<MainWindow *>(_o);
(void)_t;
switch (_id) {
case 0: _t->onAddRobotClicked(); break;
case 1: _t->onRobotTabClicked(); break;
case 2: _t->onSpecifiedRobotTabClicked(); break;
case 3: _t->onAddUAVClicked(); break;
case 4: _t->onUAVTabClicked(); break;
case 5: _t->onRobotLocationClicked(); break;
case 6: _t->onUAVViewClicked(); break;
case 7: _t->onRobotViewClicked(); break;
case 8: _t->onRobotMappingClicked(); break;
case 9: _t->onSmartNavigationClicked(); break;
case 10: _t->onIntelligenceClicked(); break;
default: ;
}
}
(void)_a;
}
QT_INIT_METAOBJECT const QMetaObject MainWindow::staticMetaObject = { {
QMetaObject::SuperData::link<QMainWindow::staticMetaObject>(),
qt_meta_stringdata_MainWindow.data,
qt_meta_data_MainWindow,
qt_static_metacall,
nullptr,
nullptr
} };
const QMetaObject *MainWindow::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
void *MainWindow::qt_metacast(const char *_clname)
{
if (!_clname) return nullptr;
if (!strcmp(_clname, qt_meta_stringdata_MainWindow.stringdata0))
return static_cast<void*>(this);
return QMainWindow::qt_metacast(_clname);
}
int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
if (_id < 11)
qt_static_metacall(this, _c, _id, _a);
_id -= 11;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
if (_id < 11)
*reinterpret_cast<int*>(_a[0]) = -1;
_id -= 11;
}
return _id;
}
QT_WARNING_POP
QT_END_MOC_NAMESPACE

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -0,0 +1,46 @@
/********************************************************************************
** Form generated from reading UI file 'DeviceDialog.ui'
**
** Created by: Qt User Interface Compiler version 5.15.15
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_DEVICEDIALOG_H
#define UI_DEVICEDIALOG_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDialog>
QT_BEGIN_NAMESPACE
class Ui_DeviceDialog
{
public:
void setupUi(QDialog *DeviceDialog)
{
if (DeviceDialog->objectName().isEmpty())
DeviceDialog->setObjectName(QString::fromUtf8("DeviceDialog"));
DeviceDialog->resize(1184, 734);
retranslateUi(DeviceDialog);
QMetaObject::connectSlotsByName(DeviceDialog);
} // setupUi
void retranslateUi(QDialog *DeviceDialog)
{
DeviceDialog->setWindowTitle(QCoreApplication::translate("DeviceDialog", "Dialog", nullptr));
} // retranslateUi
};
namespace Ui {
class DeviceDialog: public Ui_DeviceDialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_DEVICEDIALOG_H

@ -0,0 +1,618 @@
/********************************************************************************
** Form generated from reading UI file 'MainWindow.ui'
**
** Created by: Qt User Interface Compiler version 5.15.15
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenu>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QAction *action;
QAction *action_3;
QAction *action_4;
QAction *action_5;
QWidget *centralwidget;
QVBoxLayout *verticalLayout_4;
QWidget *headerWidget;
QHBoxLayout *horizontalLayout_13;
QSpacerItem *horizontalSpacer;
QHBoxLayout *horizontalLayout_logo;
QLabel *label;
QLabel *label_2;
QSpacerItem *horizontalSpacer_2;
QHBoxLayout *horizontalLayout_main;
QWidget *leftPanel;
QVBoxLayout *verticalLayout;
QLabel *leftPanelTitle;
QLabel *separatorLine;
QHBoxLayout *horizontalLayout_3;
QPushButton *robottab;
QLabel *label_10;
QHBoxLayout *horizontalLayout_4;
QPushButton *robotlocation;
QLabel *label_9;
QHBoxLayout *horizontalLayout_2;
QPushButton *addrobot;
QLabel *label_11;
QHBoxLayout *horizontalLayout;
QPushButton *mapbutton;
QLabel *label_3;
QHBoxLayout *horizontalLayout_5;
QPushButton *addUAV;
QLabel *label_8;
QHBoxLayout *horizontalLayout_6;
QPushButton *UAVtab;
QLabel *label_13;
QSpacerItem *verticalSpacer;
QWidget *centerPanel;
QVBoxLayout *verticalLayout_2;
QGridLayout *gridLayout_3;
QWidget *MapDisplayer;
QWidget *rightPanel;
QVBoxLayout *verticalLayout_3;
QLabel *rightPanelTitle;
QLabel *separatorLine_2;
QHBoxLayout *horizontalLayout_7;
QPushButton *UAVview;
QLabel *label_7;
QHBoxLayout *horizontalLayout_9;
QPushButton *robotView;
QLabel *label_4;
QHBoxLayout *horizontalLayout_8;
QPushButton *robotMapping;
QLabel *label_12;
QHBoxLayout *horizontalLayout_11;
QPushButton *smartNavigation;
QPushButton *intelligence;
QLabel *label_5;
QHBoxLayout *horizontalLayout_12;
QPushButton *faceRecognition;
QLabel *label_14;
QHBoxLayout *horizontalLayout_14;
QPushButton *faceTracking;
QLabel *label_15;
QSpacerItem *verticalSpacer_2;
QMenuBar *menubar;
QMenu *menu;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
{
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->setEnabled(true);
MainWindow->resize(1400, 900);
MainWindow->setToolTipDuration(0);
MainWindow->setStyleSheet(QString::fromUtf8("#centralwidget{\n"
" background-color: rgb(24, 33, 45);\n"
"}\n"
"\n"
"QPushButton {\n"
" background-color: rgb(30, 44, 62);\n"
" color: rgb(220, 230, 240);\n"
" border: none;\n"
" border-radius: 5px;\n"
" padding: 8px;\n"
" font-size: 14px;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(50, 70, 95);\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: rgb(40, 60, 85);\n"
"}\n"
""));
action = new QAction(MainWindow);
action->setObjectName(QString::fromUtf8("action"));
action_3 = new QAction(MainWindow);
action_3->setObjectName(QString::fromUtf8("action_3"));
action_4 = new QAction(MainWindow);
action_4->setObjectName(QString::fromUtf8("action_4"));
action_5 = new QAction(MainWindow);
action_5->setObjectName(QString::fromUtf8("action_5"));
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
centralwidget->setEnabled(true);
centralwidget->setStyleSheet(QString::fromUtf8(""));
verticalLayout_4 = new QVBoxLayout(centralwidget);
verticalLayout_4->setSpacing(0);
verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4"));
verticalLayout_4->setContentsMargins(0, 0, 0, 0);
headerWidget = new QWidget(centralwidget);
headerWidget->setObjectName(QString::fromUtf8("headerWidget"));
headerWidget->setMinimumSize(QSize(0, 80));
headerWidget->setMaximumSize(QSize(16777215, 80));
headerWidget->setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgb(15, 22, 32), stop:1 rgb(25, 35, 45));"));
horizontalLayout_13 = new QHBoxLayout(headerWidget);
horizontalLayout_13->setObjectName(QString::fromUtf8("horizontalLayout_13"));
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout_13->addItem(horizontalSpacer);
horizontalLayout_logo = new QHBoxLayout();
horizontalLayout_logo->setObjectName(QString::fromUtf8("horizontalLayout_logo"));
label = new QLabel(headerWidget);
label->setObjectName(QString::fromUtf8("label"));
label->setMinimumSize(QSize(60, 60));
label->setMaximumSize(QSize(60, 60));
label->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/logo_backgroundless.png);"));
horizontalLayout_logo->addWidget(label);
label_2 = new QLabel(headerWidget);
label_2->setObjectName(QString::fromUtf8("label_2"));
label_2->setStyleSheet(QString::fromUtf8("QLabel {\n"
" background-color: rgba(15, 28, 34, 0);\n"
" color: rgb(82, 194, 242);\n"
" border: none;\n"
" padding: 10px 20px;\n"
" border-radius: 5px;\n"
" font-size: 32px;\n"
" font-weight: bold;\n"
" font-family: \"Courier New\", \"Monaco\", monospace;\n"
" text-align: left;\n"
"}\n"
""));
horizontalLayout_logo->addWidget(label_2);
horizontalLayout_13->addLayout(horizontalLayout_logo);
horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
horizontalLayout_13->addItem(horizontalSpacer_2);
verticalLayout_4->addWidget(headerWidget);
horizontalLayout_main = new QHBoxLayout();
horizontalLayout_main->setSpacing(0);
horizontalLayout_main->setObjectName(QString::fromUtf8("horizontalLayout_main"));
leftPanel = new QWidget(centralwidget);
leftPanel->setObjectName(QString::fromUtf8("leftPanel"));
leftPanel->setMinimumSize(QSize(250, 0));
leftPanel->setMaximumSize(QSize(250, 16777215));
leftPanel->setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgb(15, 22, 32), stop:1 rgb(25, 35, 45));"));
verticalLayout = new QVBoxLayout(leftPanel);
verticalLayout->setSpacing(20);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setContentsMargins(10, 15, 10, 10);
leftPanelTitle = new QLabel(leftPanel);
leftPanelTitle->setObjectName(QString::fromUtf8("leftPanelTitle"));
leftPanelTitle->setStyleSheet(QString::fromUtf8("color: rgb(255, 255, 255);\n"
"font-size: 18px;\n"
"font-weight: bold;\n"
"padding: 12px;\n"
"margin-bottom: 10px;\n"
"background: qlineargradient(x1:0, y1:0, x2:1, y2:1, \n"
" stop:0 rgba(82, 194, 242, 0.3), \n"
" stop:1 rgba(45, 120, 180, 0.3));\n"
"border: 2px solid rgba(82, 194, 242, 0.7);\n"
"border-radius: 8px;"));
leftPanelTitle->setAlignment(Qt::AlignCenter);
verticalLayout->addWidget(leftPanelTitle);
separatorLine = new QLabel(leftPanel);
separatorLine->setObjectName(QString::fromUtf8("separatorLine"));
separatorLine->setMinimumSize(QSize(0, 3));
separatorLine->setMaximumSize(QSize(16777215, 3));
separatorLine->setStyleSheet(QString::fromUtf8("background: qlineargradient(x1:0, y1:0, x2:1, y2:0,\n"
" stop:0 rgba(82, 194, 242, 0.0),\n"
" stop:0.5 rgba(82, 194, 242, 0.8),\n"
" stop:1 rgba(82, 194, 242, 0.0));\n"
"margin-bottom: 15px;\n"
"border-radius: 2px;"));
verticalLayout->addWidget(separatorLine);
horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setObjectName(QString::fromUtf8("horizontalLayout_3"));
robottab = new QPushButton(leftPanel);
robottab->setObjectName(QString::fromUtf8("robottab"));
robottab->setMinimumSize(QSize(0, 40));
horizontalLayout_3->addWidget(robottab);
label_10 = new QLabel(leftPanel);
label_10->setObjectName(QString::fromUtf8("label_10"));
label_10->setMinimumSize(QSize(32, 32));
label_10->setMaximumSize(QSize(32, 32));
label_10->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/tab.svg);"));
horizontalLayout_3->addWidget(label_10);
verticalLayout->addLayout(horizontalLayout_3);
horizontalLayout_4 = new QHBoxLayout();
horizontalLayout_4->setObjectName(QString::fromUtf8("horizontalLayout_4"));
robotlocation = new QPushButton(leftPanel);
robotlocation->setObjectName(QString::fromUtf8("robotlocation"));
robotlocation->setMinimumSize(QSize(0, 40));
horizontalLayout_4->addWidget(robotlocation);
label_9 = new QLabel(leftPanel);
label_9->setObjectName(QString::fromUtf8("label_9"));
label_9->setMinimumSize(QSize(32, 32));
label_9->setMaximumSize(QSize(32, 32));
label_9->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/location.svg);"));
horizontalLayout_4->addWidget(label_9);
verticalLayout->addLayout(horizontalLayout_4);
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
addrobot = new QPushButton(leftPanel);
addrobot->setObjectName(QString::fromUtf8("addrobot"));
addrobot->setMinimumSize(QSize(0, 40));
horizontalLayout_2->addWidget(addrobot);
label_11 = new QLabel(leftPanel);
label_11->setObjectName(QString::fromUtf8("label_11"));
label_11->setMinimumSize(QSize(32, 32));
label_11->setMaximumSize(QSize(32, 32));
label_11->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/robotbtn.svg);"));
horizontalLayout_2->addWidget(label_11);
verticalLayout->addLayout(horizontalLayout_2);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
mapbutton = new QPushButton(leftPanel);
mapbutton->setObjectName(QString::fromUtf8("mapbutton"));
mapbutton->setMinimumSize(QSize(0, 40));
horizontalLayout->addWidget(mapbutton);
label_3 = new QLabel(leftPanel);
label_3->setObjectName(QString::fromUtf8("label_3"));
label_3->setMinimumSize(QSize(32, 32));
label_3->setMaximumSize(QSize(32, 32));
label_3->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/mapbtn.svg);"));
horizontalLayout->addWidget(label_3);
verticalLayout->addLayout(horizontalLayout);
horizontalLayout_5 = new QHBoxLayout();
horizontalLayout_5->setObjectName(QString::fromUtf8("horizontalLayout_5"));
addUAV = new QPushButton(leftPanel);
addUAV->setObjectName(QString::fromUtf8("addUAV"));
addUAV->setMinimumSize(QSize(0, 40));
horizontalLayout_5->addWidget(addUAV);
label_8 = new QLabel(leftPanel);
label_8->setObjectName(QString::fromUtf8("label_8"));
label_8->setMinimumSize(QSize(32, 32));
label_8->setMaximumSize(QSize(32, 32));
label_8->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/UAV.svg);"));
horizontalLayout_5->addWidget(label_8);
verticalLayout->addLayout(horizontalLayout_5);
horizontalLayout_6 = new QHBoxLayout();
horizontalLayout_6->setObjectName(QString::fromUtf8("horizontalLayout_6"));
UAVtab = new QPushButton(leftPanel);
UAVtab->setObjectName(QString::fromUtf8("UAVtab"));
UAVtab->setMinimumSize(QSize(0, 40));
horizontalLayout_6->addWidget(UAVtab);
label_13 = new QLabel(leftPanel);
label_13->setObjectName(QString::fromUtf8("label_13"));
label_13->setMinimumSize(QSize(32, 32));
label_13->setMaximumSize(QSize(32, 32));
label_13->setAutoFillBackground(false);
label_13->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/tab.svg);"));
horizontalLayout_6->addWidget(label_13);
verticalLayout->addLayout(horizontalLayout_6);
verticalSpacer = new QSpacerItem(20, 5, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout->addItem(verticalSpacer);
horizontalLayout_main->addWidget(leftPanel);
centerPanel = new QWidget(centralwidget);
centerPanel->setObjectName(QString::fromUtf8("centerPanel"));
centerPanel->setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgb(20, 28, 40), stop:1 rgb(30, 40, 55));"));
verticalLayout_2 = new QVBoxLayout(centerPanel);
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
verticalLayout_2->setContentsMargins(15, 15, 15, 15);
gridLayout_3 = new QGridLayout();
gridLayout_3->setSpacing(0);
gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3"));
MapDisplayer = new QWidget(centerPanel);
MapDisplayer->setObjectName(QString::fromUtf8("MapDisplayer"));
MapDisplayer->setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgb(25, 35, 50), stop:1 rgb(35, 45, 60));\n"
"border-radius: 10px;"));
gridLayout_3->addWidget(MapDisplayer, 0, 0, 1, 1);
verticalLayout_2->addLayout(gridLayout_3);
horizontalLayout_main->addWidget(centerPanel);
rightPanel = new QWidget(centralwidget);
rightPanel->setObjectName(QString::fromUtf8("rightPanel"));
rightPanel->setMinimumSize(QSize(280, 0));
rightPanel->setMaximumSize(QSize(280, 16777215));
rightPanel->setStyleSheet(QString::fromUtf8("background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgb(15, 22, 32), stop:1 rgb(25, 35, 45));"));
verticalLayout_3 = new QVBoxLayout(rightPanel);
verticalLayout_3->setSpacing(20);
verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3"));
verticalLayout_3->setContentsMargins(10, 15, 10, 10);
rightPanelTitle = new QLabel(rightPanel);
rightPanelTitle->setObjectName(QString::fromUtf8("rightPanelTitle"));
rightPanelTitle->setStyleSheet(QString::fromUtf8("color: rgb(255, 255, 255);\n"
"font-size: 18px;\n"
"font-weight: bold;\n"
"padding: 12px;\n"
"margin-bottom: 5px;\n"
"background: qlineargradient(x1:0, y1:0, x2:1, y2:1, \n"
" stop:0 rgba(82, 194, 242, 0.3), \n"
" stop:1 rgba(45, 120, 180, 0.3));\n"
"border: 2px solid rgba(82, 194, 242, 0.7);\n"
"border-radius: 8px;"));
rightPanelTitle->setAlignment(Qt::AlignCenter);
verticalLayout_3->addWidget(rightPanelTitle);
separatorLine_2 = new QLabel(rightPanel);
separatorLine_2->setObjectName(QString::fromUtf8("separatorLine_2"));
separatorLine_2->setMinimumSize(QSize(0, 3));
separatorLine_2->setMaximumSize(QSize(16777215, 3));
separatorLine_2->setStyleSheet(QString::fromUtf8("background: qlineargradient(x1:0, y1:0, x2:1, y2:0,\n"
" stop:0 rgba(82, 194, 242, 0.0),\n"
" stop:0.5 rgba(82, 194, 242, 0.8),\n"
" stop:1 rgba(82, 194, 242, 0.0));\n"
"margin-bottom: 10px;\n"
"border-radius: 2px;"));
verticalLayout_3->addWidget(separatorLine_2);
horizontalLayout_7 = new QHBoxLayout();
horizontalLayout_7->setObjectName(QString::fromUtf8("horizontalLayout_7"));
UAVview = new QPushButton(rightPanel);
UAVview->setObjectName(QString::fromUtf8("UAVview"));
UAVview->setMinimumSize(QSize(0, 40));
horizontalLayout_7->addWidget(UAVview);
label_7 = new QLabel(rightPanel);
label_7->setObjectName(QString::fromUtf8("label_7"));
label_7->setMinimumSize(QSize(32, 32));
label_7->setMaximumSize(QSize(32, 32));
label_7->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/location.svg);"));
horizontalLayout_7->addWidget(label_7);
verticalLayout_3->addLayout(horizontalLayout_7);
horizontalLayout_9 = new QHBoxLayout();
horizontalLayout_9->setObjectName(QString::fromUtf8("horizontalLayout_9"));
robotView = new QPushButton(rightPanel);
robotView->setObjectName(QString::fromUtf8("robotView"));
robotView->setMinimumSize(QSize(0, 40));
horizontalLayout_9->addWidget(robotView);
label_4 = new QLabel(rightPanel);
label_4->setObjectName(QString::fromUtf8("label_4"));
label_4->setMinimumSize(QSize(32, 32));
label_4->setMaximumSize(QSize(32, 32));
label_4->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/health.svg);"));
horizontalLayout_9->addWidget(label_4);
verticalLayout_3->addLayout(horizontalLayout_9);
horizontalLayout_8 = new QHBoxLayout();
horizontalLayout_8->setObjectName(QString::fromUtf8("horizontalLayout_8"));
robotMapping = new QPushButton(rightPanel);
robotMapping->setObjectName(QString::fromUtf8("robotMapping"));
robotMapping->setMinimumSize(QSize(0, 40));
horizontalLayout_8->addWidget(robotMapping);
label_12 = new QLabel(rightPanel);
label_12->setObjectName(QString::fromUtf8("label_12"));
label_12->setMinimumSize(QSize(32, 32));
label_12->setMaximumSize(QSize(32, 32));
label_12->setStyleSheet(QString::fromUtf8("border-image: url(:/image/res/image/soldier.svg);"));
horizontalLayout_8->addWidget(label_12);
verticalLayout_3->addLayout(horizontalLayout_8);
horizontalLayout_11 = new QHBoxLayout();
horizontalLayout_11->setObjectName(QString::fromUtf8("horizontalLayout_11"));
smartNavigation = new QPushButton(rightPanel);
smartNavigation->setObjectName(QString::fromUtf8("smartNavigation"));
smartNavigation->setMinimumSize(QSize(0, 40));
horizontalLayout_11->addWidget(smartNavigation);
intelligence = new QPushButton(rightPanel);
intelligence->setObjectName(QString::fromUtf8("intelligence"));
horizontalLayout_11->addWidget(intelligence);
label_5 = new QLabel(rightPanel);
label_5->setObjectName(QString::fromUtf8("label_5"));
label_5->setMinimumSize(QSize(32, 32));
label_5->setMaximumSize(QSize(32, 32));
label_5->setStyleSheet(QString::fromUtf8("\n"
"border-image: url(:/image/res/image/infomation.svg);"));
horizontalLayout_11->addWidget(label_5);
verticalLayout_3->addLayout(horizontalLayout_11);
horizontalLayout_12 = new QHBoxLayout();
horizontalLayout_12->setObjectName(QString::fromUtf8("horizontalLayout_12"));
faceRecognition = new QPushButton(rightPanel);
faceRecognition->setObjectName(QString::fromUtf8("faceRecognition"));
faceRecognition->setMinimumSize(QSize(0, 40));
horizontalLayout_12->addWidget(faceRecognition);
label_14 = new QLabel(rightPanel);
label_14->setObjectName(QString::fromUtf8("label_14"));
label_14->setMinimumSize(QSize(32, 32));
label_14->setMaximumSize(QSize(32, 32));
label_14->setStyleSheet(QString::fromUtf8("\n"
"border-image: url(:/image/res/image/infomation.svg);"));
horizontalLayout_12->addWidget(label_14);
verticalLayout_3->addLayout(horizontalLayout_12);
horizontalLayout_14 = new QHBoxLayout();
horizontalLayout_14->setObjectName(QString::fromUtf8("horizontalLayout_14"));
faceTracking = new QPushButton(rightPanel);
faceTracking->setObjectName(QString::fromUtf8("faceTracking"));
faceTracking->setMinimumSize(QSize(0, 40));
horizontalLayout_14->addWidget(faceTracking);
label_15 = new QLabel(rightPanel);
label_15->setObjectName(QString::fromUtf8("label_15"));
label_15->setMinimumSize(QSize(32, 32));
label_15->setMaximumSize(QSize(32, 32));
label_15->setStyleSheet(QString::fromUtf8("\n"
"border-image: url(:/image/res/image/infomation.svg);"));
horizontalLayout_14->addWidget(label_15);
verticalLayout_3->addLayout(horizontalLayout_14);
verticalSpacer_2 = new QSpacerItem(20, 5, QSizePolicy::Minimum, QSizePolicy::Expanding);
verticalLayout_3->addItem(verticalSpacer_2);
horizontalLayout_main->addWidget(rightPanel);
verticalLayout_4->addLayout(horizontalLayout_main);
MainWindow->setCentralWidget(centralwidget);
menubar = new QMenuBar(MainWindow);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 1400, 25));
menu = new QMenu(menubar);
menu->setObjectName(QString::fromUtf8("menu"));
MainWindow->setMenuBar(menubar);
statusbar = new QStatusBar(MainWindow);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
MainWindow->setStatusBar(statusbar);
menubar->addAction(menu->menuAction());
retranslateUi(MainWindow);
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
void retranslateUi(QMainWindow *MainWindow)
{
MainWindow->setWindowTitle(QCoreApplication::translate("MainWindow", "\346\210\230\345\234\272\346\216\242\347\264\242\347\263\273\347\273\237", nullptr));
action->setText(QCoreApplication::translate("MainWindow", "\346\267\273\345\212\240\346\234\272\345\231\250\344\272\272", nullptr));
action_3->setText(QCoreApplication::translate("MainWindow", "\346\230\276\347\244\272\346\234\272\345\231\250\344\272\272", nullptr));
#if QT_CONFIG(tooltip)
action_3->setToolTip(QCoreApplication::translate("MainWindow", "<html><head/><body><p>\346\230\276\347\244\272\346\234\272\345\231\250\344\272\272</p></body></html>", nullptr));
#endif // QT_CONFIG(tooltip)
action_4->setText(QCoreApplication::translate("MainWindow", "\344\274\244\345\221\230", nullptr));
action_5->setText(QCoreApplication::translate("MainWindow", "\345\212\240\350\275\275\345\234\260\345\233\276", nullptr));
label->setText(QString());
label_2->setText(QCoreApplication::translate("MainWindow", "\342\227\211 UBEES", nullptr));
leftPanelTitle->setText(QCoreApplication::translate("MainWindow", "\360\237\244\226 \346\234\272\345\231\250\344\272\272\347\256\241\347\220\206", nullptr));
separatorLine->setText(QString());
robottab->setText(QCoreApplication::translate("MainWindow", "\346\234\272\345\231\250\344\272\272\345\210\227\350\241\250", nullptr));
label_10->setText(QString());
robotlocation->setText(QCoreApplication::translate("MainWindow", "\346\234\272\345\231\250\344\272\272\344\275\215\347\275\256\346\230\276\347\244\272", nullptr));
label_9->setText(QString());
addrobot->setText(QCoreApplication::translate("MainWindow", "\346\267\273\345\212\240\346\234\272\345\231\250\344\272\272", nullptr));
label_11->setText(QString());
mapbutton->setText(QCoreApplication::translate("MainWindow", "\346\230\276\347\244\272\345\234\260\345\233\276", nullptr));
label_3->setText(QString());
addUAV->setText(QCoreApplication::translate("MainWindow", "\346\267\273\345\212\240\346\227\240\344\272\272\346\234\272", nullptr));
label_8->setText(QString());
UAVtab->setText(QCoreApplication::translate("MainWindow", "\346\227\240\344\272\272\346\234\272\345\210\227\350\241\250", nullptr));
label_13->setText(QString());
rightPanelTitle->setText(QCoreApplication::translate("MainWindow", "\360\237\216\257 \346\210\230\345\234\272\346\216\242\347\264\242\346\250\241\345\235\227", nullptr));
separatorLine_2->setText(QString());
UAVview->setText(QCoreApplication::translate("MainWindow", "\346\227\240\344\272\272\346\234\272\350\247\206\350\247\222", nullptr));
label_7->setText(QString());
robotView->setText(QCoreApplication::translate("MainWindow", "\346\234\272\345\231\250\347\213\227\350\247\206\350\247\222", nullptr));
label_4->setText(QString());
robotMapping->setText(QCoreApplication::translate("MainWindow", "\346\234\272\345\231\250\347\213\227\345\273\272\345\233\276", nullptr));
label_12->setText(QString());
smartNavigation->setText(QCoreApplication::translate("MainWindow", "\360\237\247\255 \346\231\272\350\203\275\345\257\274\350\210\252", nullptr));
intelligence->setText(QCoreApplication::translate("MainWindow", "\360\237\224\212 \346\203\205\346\212\245\344\274\240\350\276\276", nullptr));
label_5->setText(QString());
faceRecognition->setText(QCoreApplication::translate("MainWindow", "\344\272\272\350\204\270\350\257\206\345\210\253", nullptr));
label_14->setText(QString());
faceTracking->setText(QCoreApplication::translate("MainWindow", "\344\272\272\350\204\270\350\267\237\351\232\217", nullptr));
label_15->setText(QString());
menu->setTitle(QCoreApplication::translate("MainWindow", "\345\212\237\350\203\275\347\225\214\351\235\242", nullptr));
} // retranslateUi
};
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_MAINWINDOW_H

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>RobotListDialog</class> <class>DeviceDialog</class>
<widget class="QDialog" name="RobotListDialog"> <widget class="QDialog" name="DeviceDialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>GuidingUI</class> <class>MainWindow</class>
<widget class="QMainWindow" name="GuidingUI"> <widget class="QMainWindow" name="MainWindow">
<property name="enabled"> <property name="enabled">
<bool>true</bool> <bool>true</bool>
</property> </property>

@ -0,0 +1,26 @@
#ifndef DEVICEDIALOG_H
#define DEVICEDIALOG_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui {
class DeviceDialog;
}
QT_END_NAMESPACE
class DeviceDialog : public QDialog
{
Q_OBJECT
public:
explicit DeviceDialog(QWidget *parent = nullptr);
~DeviceDialog();
void addDeviceInfo(QString name, QString type, QString status, QString position);
private:
Ui::DeviceDialog *ui;
};
#endif // DEVICEDIALOG_H

@ -38,7 +38,7 @@
#include <QPair> #include <QPair>
// 自定义模块头文件 // 自定义模块头文件
#include "AudioModule/IntelligenceUI.h" // #include "AudioModule/IntelligenceUI.h" // 暂时注释掉,待实现
// 标准库头文件 // 标准库头文件
#include <string> #include <string>
@ -46,12 +46,12 @@
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { namespace Ui {
class GuidingUI; class MainWindow;
} }
QT_END_NAMESPACE QT_END_NAMESPACE
/** /**
* @class GuidingUI * @class MainWindow
* @brief * @brief
* *
* QMainWindow * QMainWindow
@ -74,9 +74,9 @@ QT_END_NAMESPACE
* @note * @note
* @warning 使 * @warning 使
* @see UAVDatabase, DogDatabase * @see UAVDatabase, DogDatabase
* @since 1.0 * @since 2.0
*/ */
class GuidingUI : public QMainWindow class MainWindow : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
@ -85,12 +85,12 @@ public:
* @brief * @brief
* @param parent nullptr * @param parent nullptr
*/ */
explicit GuidingUI(QWidget *parent = nullptr); explicit MainWindow(QWidget *parent = nullptr);
/** /**
* @brief * @brief
*/ */
~GuidingUI(); ~MainWindow();
/** /**
* @brief * @brief
@ -186,10 +186,10 @@ private:
void setupStyle(); void setupStyle();
private: private:
Ui::GuidingUI *m_ui; ///< UI界面指针 Ui::MainWindow *m_ui; ///< UI界面指针
IntelligenceUI *m_intelligenceUI; ///< 情报传达界面指针 // IntelligenceUI *m_intelligenceUI; ///< 情报传达界面指针(暂时注释掉)
QVector<QPair<QString, QString>> m_robotList; ///< 机器人列表(名称-IP地址对 QVector<QPair<QString, QString>> m_robotList; ///< 机器人列表(名称-IP地址对
QVector<QPair<QString, QString>> m_uavList; ///< 无人机列表(名称-IP地址对 QVector<QPair<QString, QString>> m_uavList; ///< 无人机列表(名称-IP地址对
// 人脸识别相关成员变量已移除(功能暂未实现) // 人脸识别相关成员变量已移除(功能暂未实现)
}; };
#endif // GUIDINGUI_H #endif // MAINWINDOW_H

@ -1,4 +1,4 @@
#include "DogDatabase.h" #include "core/database/DogDatabase.h"
// 单例实例指针定义 // 单例实例指针定义
DogDatabase *DogDatabase::m_instance = nullptr; DogDatabase *DogDatabase::m_instance = nullptr;

@ -1,4 +1,4 @@
#include "UAVDatabase.h" #include "core/database/UAVDatabase.h"
UAVDatabase *UAVDatabase::getInstance() UAVDatabase *UAVDatabase::getInstance()
{ {

@ -1,6 +1,6 @@
#include "guidingui.h" #include "ui/main/MainWindow.h"
#include "DogDatabase.h" #include "core/database/DogDatabase.h"
#include "UAVDatabase.h" #include "core/database/UAVDatabase.h"
#include <QApplication> #include <QApplication>
#include <QtSql> #include <QtSql>
#include <QSqlDatabase> #include <QSqlDatabase>
@ -14,7 +14,7 @@ int main(int argc, char *argv[])
QIcon icon(":/image/res/image/logo_backgroundless.png"); QIcon icon(":/image/res/image/logo_backgroundless.png");
a.setWindowIcon(icon); a.setWindowIcon(icon);
GuidingUI w; MainWindow w;
w.show(); w.show();
QStringList lis= QSqlDatabase::drivers(); QStringList lis= QSqlDatabase::drivers();
for (int i=0;i<lis.length();i++) { for (int i=0;i<lis.length();i++) {

File diff suppressed because it is too large Load Diff

@ -1,12 +1,12 @@
#include "robotlistdialog.h" #include "ui/dialogs/DeviceDialog.h"
#include "ui_robotlistdialog.h" #include "build/ui_DeviceDialog.h"
#include <QPushButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QLabel> #include <QLabel>
RobotListDialog::RobotListDialog(QWidget *parent) : DeviceDialog::DeviceDialog(QWidget *parent) :
QDialog(parent), QDialog(parent),
ui(new Ui::RobotListDialog) ui(new Ui::DeviceDialog)
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowTitle("机器人列表"); setWindowTitle("机器人列表");
@ -15,12 +15,12 @@ RobotListDialog::RobotListDialog(QWidget *parent) :
setStyleSheet("background-color: rgba(255, 255, 255, 150);"); // 设置透明度为 150 的白色背景 setStyleSheet("background-color: rgba(255, 255, 255, 150);"); // 设置透明度为 150 的白色背景
} }
RobotListDialog::~RobotListDialog() DeviceDialog::~DeviceDialog()
{ {
delete ui; delete ui;
} }
void RobotListDialog::addRobotInfo(QString name, QString type, QString status, QString position) void DeviceDialog::addDeviceInfo(QString name, QString type, QString status, QString position)
{ {
// 创建一个新的机器人信息部件 // 创建一个新的机器人信息部件
QWidget *widget = new QWidget(); QWidget *widget = new QWidget();

@ -7,7 +7,7 @@
*/ */
#include "ui/main/MainWindow.h" #include "ui/main/MainWindow.h"
#include "ui_MainWindow.h" #include "build/ui_MainWindow.h"
// Qt GUI头文件 // Qt GUI头文件
#include <QWebEngineView> #include <QWebEngineView>
@ -33,10 +33,10 @@
#include <QTableWidgetItem> #include <QTableWidgetItem>
#include <QHeaderView> #include <QHeaderView>
GuidingUI::GuidingUI(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, m_ui(new Ui::GuidingUI) , m_ui(new Ui::MainWindow)
, m_intelligenceUI(nullptr) // , m_intelligenceUI(nullptr) // 暂时注释掉
{ {
m_ui->setupUi(this); m_ui->setupUi(this);
@ -49,12 +49,12 @@ GuidingUI::GuidingUI(QWidget *parent)
m_robotList.append(qMakePair(QString("Bob"), QString("192.168.0.2"))); m_robotList.append(qMakePair(QString("Bob"), QString("192.168.0.2")));
} }
GuidingUI::~GuidingUI() MainWindow::~MainWindow()
{ {
delete m_ui; delete m_ui;
} }
void GuidingUI::setupUI() void MainWindow::setupUI()
{ {
// 设置窗口最小尺寸 // 设置窗口最小尺寸
this->setMinimumSize(1200, 800); this->setMinimumSize(1200, 800);
@ -77,7 +77,7 @@ void GuidingUI::setupUI()
robotsInfosControl(m_ui->robottab); robotsInfosControl(m_ui->robottab);
} }
void GuidingUI::setupStyle() void MainWindow::setupStyle()
{ {
// 设置按钮样式 - 现代化军用风格 // 设置按钮样式 - 现代化军用风格
QString buttonStyle = "QPushButton {" QString buttonStyle = "QPushButton {"
@ -122,22 +122,22 @@ void GuidingUI::setupStyle()
// 注意:人脸识别相关按钮已移除样式设置 // 注意:人脸识别相关按钮已移除样式设置
} }
void GuidingUI::connectSignals() void MainWindow::connectSignals()
{ {
// 连接按钮信号 // 连接按钮信号
connect(m_ui->addUAV, &QPushButton::clicked, this, &GuidingUI::onAddUAVClicked); connect(m_ui->addUAV, &QPushButton::clicked, this, &MainWindow::onAddUAVClicked);
connect(m_ui->UAVtab, &QPushButton::clicked, this, &GuidingUI::onUAVTabClicked); connect(m_ui->UAVtab, &QPushButton::clicked, this, &MainWindow::onUAVTabClicked);
connect(m_ui->robotlocation, &QPushButton::clicked, this, &GuidingUI::onRobotLocationClicked); connect(m_ui->robotlocation, &QPushButton::clicked, this, &MainWindow::onRobotLocationClicked);
connect(m_ui->UAVview, &QPushButton::clicked, this, &GuidingUI::onUAVViewClicked); connect(m_ui->UAVview, &QPushButton::clicked, this, &MainWindow::onUAVViewClicked);
connect(m_ui->robotView, &QPushButton::clicked, this, &GuidingUI::onRobotViewClicked); connect(m_ui->robotView, &QPushButton::clicked, this, &MainWindow::onRobotViewClicked);
connect(m_ui->robotMapping, &QPushButton::clicked, this, &GuidingUI::onRobotMappingClicked); connect(m_ui->robotMapping, &QPushButton::clicked, this, &MainWindow::onRobotMappingClicked);
connect(m_ui->smartNavigation, &QPushButton::clicked, this, &GuidingUI::onSmartNavigationClicked); connect(m_ui->smartNavigation, &QPushButton::clicked, this, &MainWindow::onSmartNavigationClicked);
connect(m_ui->intelligence, &QPushButton::clicked, this, &GuidingUI::onIntelligenceClicked); connect(m_ui->intelligence, &QPushButton::clicked, this, &MainWindow::onIntelligenceClicked);
// 注意:人脸识别相关信号连接已移除 // 注意:人脸识别相关信号连接已移除
} }
void GuidingUI::mapDisplayControl(QPushButton *btnCtr, QWidget *target, QGridLayout *layout) void MainWindow::mapDisplayControl(QPushButton *btnCtr, QWidget *target, QGridLayout *layout)
{ {
// 创建堆栈部件 // 创建堆栈部件
QStackedWidget *stackedWidget = new QStackedWidget(this); QStackedWidget *stackedWidget = new QStackedWidget(this);
@ -195,17 +195,17 @@ void GuidingUI::mapDisplayControl(QPushButton *btnCtr, QWidget *target, QGridLay
layout->addWidget(stackedWidget); layout->addWidget(stackedWidget);
} }
void GuidingUI::addRobotControl(QPushButton *btnCtr) void MainWindow::addRobotControl(QPushButton *btnCtr)
{ {
connect(btnCtr, &QPushButton::clicked, this, &GuidingUI::onAddRobotClicked); connect(btnCtr, &QPushButton::clicked, this, &MainWindow::onAddRobotClicked);
} }
void GuidingUI::robotsInfosControl(QPushButton *btnCtr) void MainWindow::robotsInfosControl(QPushButton *btnCtr)
{ {
connect(btnCtr, &QPushButton::clicked, this, &GuidingUI::onRobotTabClicked); connect(btnCtr, &QPushButton::clicked, this, &MainWindow::onRobotTabClicked);
} }
void GuidingUI::onAddRobotClicked() void MainWindow::onAddRobotClicked()
{ {
QDialog *dialog = new QDialog(this); QDialog *dialog = new QDialog(this);
dialog->setWindowTitle("添加机器人"); dialog->setWindowTitle("添加机器人");
@ -252,7 +252,7 @@ void GuidingUI::onAddRobotClicked()
delete dialog; delete dialog;
} }
void GuidingUI::onRobotTabClicked() void MainWindow::onRobotTabClicked()
{ {
QDialog *dialog = new QDialog(this); QDialog *dialog = new QDialog(this);
dialog->setWindowTitle("机器人列表"); dialog->setWindowTitle("机器人列表");
@ -286,12 +286,12 @@ void GuidingUI::onRobotTabClicked()
delete dialog; delete dialog;
} }
void GuidingUI::onSpecifiedRobotTabClicked() void MainWindow::onSpecifiedRobotTabClicked()
{ {
QMessageBox::information(this, "提示", "切换到指定机器人页面功能正在开发中"); QMessageBox::information(this, "提示", "切换到指定机器人页面功能正在开发中");
} }
void GuidingUI::onAddUAVClicked() void MainWindow::onAddUAVClicked()
{ {
QDialog *dialog = new QDialog(this); QDialog *dialog = new QDialog(this);
dialog->setWindowTitle("添加无人机"); dialog->setWindowTitle("添加无人机");
@ -338,7 +338,7 @@ void GuidingUI::onAddUAVClicked()
delete dialog; delete dialog;
} }
void GuidingUI::onUAVTabClicked() void MainWindow::onUAVTabClicked()
{ {
QDialog *dialog = new QDialog(this); QDialog *dialog = new QDialog(this);
dialog->setWindowTitle("无人机列表"); dialog->setWindowTitle("无人机列表");
@ -372,37 +372,41 @@ void GuidingUI::onUAVTabClicked()
delete dialog; delete dialog;
} }
void GuidingUI::onRobotLocationClicked() void MainWindow::onRobotLocationClicked()
{ {
QMessageBox::information(this, "机器人定位", "机器人定位功能正在开发中,暂时无法使用"); QMessageBox::information(this, "机器人定位", "机器人定位功能正在开发中,暂时无法使用");
} }
void GuidingUI::onUAVViewClicked() void MainWindow::onUAVViewClicked()
{ {
QMessageBox::information(this, "无人机视图", "无人机视图功能正在开发中,暂时无法使用"); QMessageBox::information(this, "无人机视图", "无人机视图功能正在开发中,暂时无法使用");
} }
void GuidingUI::onRobotViewClicked() void MainWindow::onRobotViewClicked()
{ {
QMessageBox::information(this, "机器人视图", "机器人视图功能正在开发中,暂时无法使用"); QMessageBox::information(this, "机器人视图", "机器人视图功能正在开发中,暂时无法使用");
} }
void GuidingUI::onRobotMappingClicked() void MainWindow::onRobotMappingClicked()
{ {
QMessageBox::information(this, "机器人建图", "机器人建图功能正在开发中,暂时无法使用"); QMessageBox::information(this, "机器人建图", "机器人建图功能正在开发中,暂时无法使用");
} }
void GuidingUI::onSmartNavigationClicked() void MainWindow::onSmartNavigationClicked()
{ {
QMessageBox::information(this, "智能导航", "智能导航功能正在开发中,暂时无法使用"); QMessageBox::information(this, "智能导航", "智能导航功能正在开发中,暂时无法使用");
} }
void GuidingUI::onIntelligenceClicked() void MainWindow::onIntelligenceClicked()
{ {
// 暂时注释掉 IntelligenceUI 相关功能,待实现
/*
if (!m_intelligenceUI) { if (!m_intelligenceUI) {
m_intelligenceUI = new IntelligenceUI(this); m_intelligenceUI = new IntelligenceUI(this);
} }
m_intelligenceUI->show(); m_intelligenceUI->show();
m_intelligenceUI->activateWindow(); m_intelligenceUI->activateWindow();
m_intelligenceUI->raise(); m_intelligenceUI->raise();
*/
qDebug() << "Intelligence UI feature not implemented yet";
} }
Loading…
Cancel
Save