|
|
|
@ -110,12 +110,12 @@ void EnemyStatsDialog::setupTable()
|
|
|
|
|
QVBoxLayout *tableLayout = new QVBoxLayout(m_tableGroup);
|
|
|
|
|
tableLayout->setContentsMargins(15, 20, 15, 15);
|
|
|
|
|
|
|
|
|
|
m_enemyTable = new QTableWidget(0, 7, this);
|
|
|
|
|
m_enemyTable = new QTableWidget(0, 6, this);
|
|
|
|
|
m_enemyTable->setObjectName("EnemyTable");
|
|
|
|
|
|
|
|
|
|
// 设置表头
|
|
|
|
|
QStringList headers;
|
|
|
|
|
headers << "敌人ID" << "坐标位置" << "威胁等级" << "发现时间" << "敌人类型" << "状态" << "操作";
|
|
|
|
|
headers << "敌人ID" << "坐标位置" << "威胁等级" << "发现时间" << "状态" << "操作";
|
|
|
|
|
m_enemyTable->setHorizontalHeaderLabels(headers);
|
|
|
|
|
|
|
|
|
|
// 设置表格属性
|
|
|
|
@ -130,9 +130,8 @@ void EnemyStatsDialog::setupTable()
|
|
|
|
|
m_enemyTable->setColumnWidth(1, 180); // 坐标位置
|
|
|
|
|
m_enemyTable->setColumnWidth(2, 100); // 威胁等级
|
|
|
|
|
m_enemyTable->setColumnWidth(3, 150); // 发现时间
|
|
|
|
|
m_enemyTable->setColumnWidth(4, 120); // 敌人类型
|
|
|
|
|
m_enemyTable->setColumnWidth(5, 100); // 状态
|
|
|
|
|
m_enemyTable->setColumnWidth(6, 120); // 操作
|
|
|
|
|
m_enemyTable->setColumnWidth(4, 100); // 状态
|
|
|
|
|
m_enemyTable->setColumnWidth(5, 120); // 操作
|
|
|
|
|
|
|
|
|
|
// 设置表头样式
|
|
|
|
|
m_enemyTable->horizontalHeader()->setStretchLastSection(false);
|
|
|
|
@ -360,7 +359,6 @@ void EnemyStatsDialog::loadTestData()
|
|
|
|
|
enemy1.latitude = 39.9042;
|
|
|
|
|
enemy1.threatLevel = "高";
|
|
|
|
|
enemy1.discoveryTime = QDateTime::currentDateTime().addSecs(-3600);
|
|
|
|
|
enemy1.enemyType = "装甲车";
|
|
|
|
|
enemy1.status = "活跃";
|
|
|
|
|
addEnemyInfo(enemy1);
|
|
|
|
|
|
|
|
|
@ -370,7 +368,6 @@ void EnemyStatsDialog::loadTestData()
|
|
|
|
|
enemy2.latitude = 39.9139;
|
|
|
|
|
enemy2.threatLevel = "中";
|
|
|
|
|
enemy2.discoveryTime = QDateTime::currentDateTime().addSecs(-1800);
|
|
|
|
|
enemy2.enemyType = "步兵";
|
|
|
|
|
enemy2.status = "活跃";
|
|
|
|
|
addEnemyInfo(enemy2);
|
|
|
|
|
|
|
|
|
@ -380,7 +377,6 @@ void EnemyStatsDialog::loadTestData()
|
|
|
|
|
enemy3.latitude = 39.8876;
|
|
|
|
|
enemy3.threatLevel = "低";
|
|
|
|
|
enemy3.discoveryTime = QDateTime::currentDateTime().addSecs(-900);
|
|
|
|
|
enemy3.enemyType = "侦察兵";
|
|
|
|
|
enemy3.status = "失联";
|
|
|
|
|
addEnemyInfo(enemy3);
|
|
|
|
|
|
|
|
|
@ -390,7 +386,6 @@ void EnemyStatsDialog::loadTestData()
|
|
|
|
|
enemy4.latitude = 39.9254;
|
|
|
|
|
enemy4.threatLevel = "高";
|
|
|
|
|
enemy4.discoveryTime = QDateTime::currentDateTime().addSecs(-300);
|
|
|
|
|
enemy4.enemyType = "坦克";
|
|
|
|
|
enemy4.status = "活跃";
|
|
|
|
|
addEnemyInfo(enemy4);
|
|
|
|
|
|
|
|
|
@ -428,11 +423,6 @@ void EnemyStatsDialog::addEnemyInfo(const EnemyInfo &enemy)
|
|
|
|
|
timeItem->setTextAlignment(Qt::AlignCenter);
|
|
|
|
|
m_enemyTable->setItem(row, 3, timeItem);
|
|
|
|
|
|
|
|
|
|
// 敌人类型
|
|
|
|
|
QTableWidgetItem *typeItem = new QTableWidgetItem(enemy.enemyType);
|
|
|
|
|
typeItem->setTextAlignment(Qt::AlignCenter);
|
|
|
|
|
m_enemyTable->setItem(row, 4, typeItem);
|
|
|
|
|
|
|
|
|
|
// 状态
|
|
|
|
|
QTableWidgetItem *statusItem = new QTableWidgetItem(enemy.status);
|
|
|
|
|
statusItem->setTextAlignment(Qt::AlignCenter);
|
|
|
|
@ -443,7 +433,7 @@ void EnemyStatsDialog::addEnemyInfo(const EnemyInfo &enemy)
|
|
|
|
|
} else {
|
|
|
|
|
statusItem->setForeground(QColor("#ffa502"));
|
|
|
|
|
}
|
|
|
|
|
m_enemyTable->setItem(row, 5, statusItem);
|
|
|
|
|
m_enemyTable->setItem(row, 4, statusItem);
|
|
|
|
|
|
|
|
|
|
// 操作按钮
|
|
|
|
|
QPushButton *deleteBtn = new QPushButton("🗑️ 删除");
|
|
|
|
@ -464,7 +454,7 @@ void EnemyStatsDialog::addEnemyInfo(const EnemyInfo &enemy)
|
|
|
|
|
connect(deleteBtn, &QPushButton::clicked, [this, enemy]() {
|
|
|
|
|
removeEnemyInfo(enemy.id);
|
|
|
|
|
});
|
|
|
|
|
m_enemyTable->setCellWidget(row, 6, deleteBtn);
|
|
|
|
|
m_enemyTable->setCellWidget(row, 5, deleteBtn);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EnemyStatsDialog::updateEnemyInfo(const QString &id, const EnemyInfo &enemy)
|
|
|
|
@ -480,8 +470,7 @@ void EnemyStatsDialog::updateEnemyInfo(const QString &id, const EnemyInfo &enemy
|
|
|
|
|
m_enemyTable->item(row, 2)->setText(enemy.threatLevel);
|
|
|
|
|
m_enemyTable->item(row, 2)->setBackground(getThreatLevelColor(enemy.threatLevel));
|
|
|
|
|
m_enemyTable->item(row, 3)->setText(enemy.discoveryTime.toString("yyyy-MM-dd hh:mm:ss"));
|
|
|
|
|
m_enemyTable->item(row, 4)->setText(enemy.enemyType);
|
|
|
|
|
m_enemyTable->item(row, 5)->setText(enemy.status);
|
|
|
|
|
m_enemyTable->item(row, 4)->setText(enemy.status);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -572,7 +561,7 @@ void EnemyStatsDialog::onExportData()
|
|
|
|
|
out.setCodec("UTF-8");
|
|
|
|
|
|
|
|
|
|
// 写入CSV头部
|
|
|
|
|
out << "敌人ID,经度,纬度,威胁等级,发现时间,敌人类型,状态\n";
|
|
|
|
|
out << "敌人ID,经度,纬度,威胁等级,发现时间,状态\n";
|
|
|
|
|
|
|
|
|
|
// 写入数据
|
|
|
|
|
for (const auto &enemy : m_enemyList) {
|
|
|
|
@ -581,7 +570,6 @@ void EnemyStatsDialog::onExportData()
|
|
|
|
|
<< QString::number(enemy.latitude, 'f', 6) << ","
|
|
|
|
|
<< enemy.threatLevel << ","
|
|
|
|
|
<< enemy.discoveryTime.toString("yyyy-MM-dd hh:mm:ss") << ","
|
|
|
|
|
<< enemy.enemyType << ","
|
|
|
|
|
<< enemy.status << "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -694,7 +682,6 @@ EnemyInfo EnemyStatsDialog::recordToInfo(const EnemyRecord &record)
|
|
|
|
|
info.latitude = record.latitude;
|
|
|
|
|
info.threatLevel = record.threatLevel;
|
|
|
|
|
info.discoveryTime = record.discoveryTime;
|
|
|
|
|
info.enemyType = record.enemyType;
|
|
|
|
|
info.status = record.status;
|
|
|
|
|
return info;
|
|
|
|
|
}
|
|
|
|
|