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: '© <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
Binary file not shown.
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
|
Binary file not shown.
@ -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
|
@ -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
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue