Compare commits

...

8 Commits
shiyi ... main

@ -14,7 +14,7 @@ QMAKE_PROJECT_DEPTH = 0
# QMAKE_LFLAGS += /MANIFESTUAC:\"level=\'requireAdministrator\' uiAccess=\'false\'\"
#程序版本
VERSION = 1.1.0.2
VERSION = 1.1.0.5
#程序版本
QMAKE_TARGET_COMPANY = "HTSDFP"

@ -0,0 +1,47 @@
# Git提交规范
## 提交格式
commit 提交信息时,必须是 **git commit -m '【提交类型】: [改动功能模块]【修改内容描述】'** 符合类型的才可以,**需要注意的是类型的后面需要用英文的 :,并且冒号后面是需要空一格的**。例如git commit -m "fix: [光电吊舱]修复配置参数保存失效问题;"
### git提交类型
```
'feat', //新特性、新功能
'fix', //修改bug
'docs', //文档修改
'style', //代码格式修改, 注意不是 css 修改
'refactor',//代码重构
'perf', //优化相关,比如提升性能、体验
'test', //测试用例修改
'chore', //其他修改, 比如改变构建流程、或者增加依赖库、工具等
'revert', //回滚到上一个版本
'build', //编译相关的修改,例如发布版本、对项目构建或者依赖的改动
'style', //代码风格调整
'ci', /持续集成
security,//安全相关
'i18n', //国际化
l10n, //本地化
'merge', //合并分支
'hotfix', //紧急修复
'dependencies',//依赖管理
```
## 环境:
Qt版本要求6.5.3以上建议使用LTS版本6.5.3或最新LTS6.8.1。编译器采用MSVC。
依赖的Qt组件
- Qt5 Compatibility Module
- Qt Location
- Qt Positioning
- Qt WebChannel
- Qt WebSockets
- Qt WebView
- Qt WebEngine
第三方库:
- FFmpeg

@ -348,7 +348,7 @@ void GDDCCmdDlg::on_pushButton_3_4_released() {
clearTJDCCmdBuffer();
TJDCCmdBuffer[0] = (std::byte)0x45;
TJDCCmdBuffer[1] = (std::byte)0x00;
sendCurDate(TJDCCmdBuffer, 1);
sendCurDate(TJDCCmdBuffer, 3);
}
// 变倍-

@ -97,7 +97,7 @@
<rect>
<x>174</x>
<y>150</y>
<width>161</width>
<width>168</width>
<height>106</height>
</rect>
</property>

@ -63,7 +63,8 @@ void GDDCSet::initParam() {
ui->radioButton_NetCtrlTCP->setChecked(false);
// 读取本机网络设备
QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
QString urlFile =
QCoreApplication::applicationDirPath() + "/config_pod.ini";
// QString urlFile = QDir::currentPath() + "./config.ini";
m_configIniPath = urlFile.toLatin1();
char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径

@ -584,9 +584,9 @@ void GDDCStateInfo::UDPMessageReceive(QByteArray &da, int size) {
}
bool GDDCStateInfo::checkdata(QByteArray buffer, int length, int type) {
// if (length != 64) {
// return false;
// }
if (length < 64) {
return false;
}
if ((buffer.at(0) != '\xFC') || (buffer.at(1) != '\x2C') ||
buffer.at(63) != '\xF0') {
return false;

@ -11,6 +11,7 @@
#include <iostream>
#include <QPixmap>
#include "ui_gddcdlg.h"
#include <QWidget>
#pragma comment(lib, "Wtsapi32.lib")
using namespace std;
@ -311,11 +312,34 @@ void GDDCdlg::mouseMoveEvent(QMouseEvent *event) {
QPointF diff = event->pos() - _dragStartPositon;
qDebug() << "x:" << diff.x() <<"y:" <<diff.y();
m_GDDCCmdDlg->setMoveParm(diff);
_moveFlag = true;
firstLocation->move((_dragStartPositon - QPoint(firstLocation->width()/2, firstLocation->height()/2)).toPoint());
lastLocation->move(event->pos() - QPoint(lastLocation->width() / 2, lastLocation->height() / 2));
firstLocation->show();
lastLocation->show();
if(qAbs(diff.x()) > 5 || qAbs(diff.y()) >5)//像素点超过5ptx才算移动否则为跟踪
{
_moveFlag = true;
firstLocation->move((_dragStartPositon - QPoint(firstLocation->width()/2, firstLocation->height()/2)).toPoint());
lastLocation->move(event->pos() - QPoint(lastLocation->width() / 2, lastLocation->height() / 2));
firstLocation->show();
lastLocation->show();
}
QPointF widgetPos = mapFromGlobal(event->globalPosition());
//如果移动的时候超过了画面显示区域,则自动退出伺服控制
if(!ui->WgtffmpegVideo->rect().contains(widgetPos.toPoint()))
{
_moveFlag = false;
std::byte buffer[10] = {static_cast<std::byte>(0)};
buffer[5] = (std::byte)0x70;
buffer[6] = (std::byte)0x00;
buffer[7] = (std::byte)0x00;
buffer[8] = (std::byte)0x00;
buffer[9] = (std::byte)0x00;
// 发送3次
m_GDDCCmdDlg->sendCurDate(buffer, 3);
firstLocation->hide();
lastLocation->hide();
}
}
}
@ -326,7 +350,7 @@ void GDDCdlg::mouseReleaseEvent(QMouseEvent *event)
if(event->button() == Qt::LeftButton && _moveFlag)
{
_moveFlag = false;
std::byte buffer[10];
std::byte buffer[10] = {static_cast<std::byte>(0)};
buffer[5] = (std::byte)0x70;
buffer[6] = (std::byte)0x00;
buffer[7] = (std::byte)0x00;
@ -447,7 +471,7 @@ void GDDCdlg::resizeUI() {
void GDDCdlg::setGlobalSetMap(
std::unordered_map<QString, settingStruct> &gSetMap) {
if (m_DlgGDDCSet) {
m_DlgGDDCSet->initPullURL(gSetMap["光电吊舱"].net.remoteIp);
m_DlgGDDCSet->initPullURL(gSetMap["Pod"].net.remoteIp);
}
}

@ -101,6 +101,8 @@ void deviceStateDlg::initParam() {
cmdlist[2] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[3] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[4] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[5] << "/c" << "ping" << "www.baidu.com -n 2";
cmdlist[6] << "/c" << "ping" << "www.baidu.com -n 2";
startNetDetn();
}
@ -148,6 +150,22 @@ void deviceStateDlg::receiveResult(int id, QString result,QString delay) {
}
ui->pushButton_state_3DCamra->setToolTip(delay);
break;
case 5:
if (result == "在线") {
ui->pushButton_state_rescue->setIcon(m_greenIcon);
} else {
ui->pushButton_state_rescue->setIcon(m_redIcon);
}
ui->pushButton_state_rescue->setToolTip(delay);
break;
case 6:
if (result == "在线") {
ui->pushButton_state_PDT->setIcon(m_greenIcon);
} else {
ui->pushButton_state_PDT->setIcon(m_redIcon);
}
ui->pushButton_state_PDT->setToolTip(delay);
break;
default:
break;
}
@ -191,6 +209,20 @@ void deviceStateDlg::setDeviceIP(int id, settingStruct param) {
cmdlist[4] << strIp;
m_networkDetection[4]->DyChangeCmdList(cmdlist[4]); // 更新到网络检测线程
break;
case HomePageSetingWidget::RescueLoading:
strIp = stringIPSelect(param.url);
strIp="/c ping " + strIp + " -n 1";
cmdlist[5].clear();
cmdlist[5] << strIp;
m_networkDetection[5]->DyChangeCmdList(cmdlist[5]); // 更新到网络检测线程
break;
case HomePageSetingWidget::PdtLoading:
strIp = stringIPSelect(param.url);
strIp="/c ping " + strIp + " -n 1";
cmdlist[6].clear();
cmdlist[6] << strIp;
m_networkDetection[6]->DyChangeCmdList(cmdlist[6]); // 更新到网络检测线程
break;
default:
break;
}
@ -228,11 +260,13 @@ QString deviceStateDlg::stringIPSelect(QString str) {
void deviceStateDlg::setUrl(
std::unordered_map<QString, settingStruct> &urlMap) {
m_urlMap = urlMap;
setDeviceIP(HomePageSetingWidget::GDDC, m_urlMap["光电吊舱"]);
setDeviceIP(HomePageSetingWidget::L_Link, m_urlMap["L链"]);
setDeviceIP(HomePageSetingWidget::Adhoc_Network, m_urlMap["宽带自组网"]);
setDeviceIP(HomePageSetingWidget::Satelite_Comm, m_urlMap["机载卫通"]);
setDeviceIP(HomePageSetingWidget::ModelCamera, m_urlMap["三维建模"]);
setDeviceIP(HomePageSetingWidget::GDDC, m_urlMap["Pod"]);
setDeviceIP(HomePageSetingWidget::L_Link, m_urlMap["L-Link"]);
setDeviceIP(HomePageSetingWidget::Adhoc_Network, m_urlMap["HocNetwork"]);
setDeviceIP(HomePageSetingWidget::Satelite_Comm, m_urlMap["SatelliteComm"]);
setDeviceIP(HomePageSetingWidget::ModelCamera, m_urlMap["ModelCamera"]);
setDeviceIP(HomePageSetingWidget::RescueLoading, m_urlMap["RescueLoading"]);
setDeviceIP(HomePageSetingWidget::PdtLoading, m_urlMap["PdtLoading"]);
}
// 开始网络监测
void deviceStateDlg::startNetDetn() {

@ -7,7 +7,7 @@
#include <QThread>
#include <QTimer>
#include <QWidget>
#define deviceNum 5
#define deviceNum 7
namespace Ui {
class deviceStateDlg;
}
@ -52,6 +52,8 @@ public:
// 2 自组网
// 3ku卫通
// 4三维相机
// 5 搜救载荷
// 6 PDT
QStringList cmdlist[deviceNum];
QIcon m_greyIcon,m_greenIcon,m_redIcon;
networkDetection *m_networkDetection[deviceNum];

@ -1,104 +1,138 @@
#include "homepagesetingwidget.h"
#include "ui_homepagesetingwidget.h"
HomePageSetingWidget::HomePageSetingWidget(QWidget *parent)
: QWidget(parent), ui(new Ui::HomePageSetingWidget) {
ui->setupUi(this);
init();
ui->setupUi(this);
init();
}
HomePageSetingWidget::~HomePageSetingWidget() {
delete ui;
}
HomePageSetingWidget::~HomePageSetingWidget() { delete ui; }
void HomePageSetingWidget::init() {
// 选择配置文件
urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
_configIni = std::make_unique<QSettings>(urlFile, QSettings::IniFormat);
// 选择配置文件
urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
_configIni = std::make_unique<QSettings>(urlFile, QSettings::IniFormat);
// 读取配置信息
_GDDC.net.remoteIp = _configIni->value("光电吊舱/IP").toString();
_GDDC.net.remotePort = _configIni->value("光电吊舱/Port").toInt();
_lLink.url = _configIni->value("L链/IP").toString();
_adHocNetwork.url = _configIni->value("宽带自组网/IP").toString();
_satelliteComm.url = _configIni->value("机载卫通/IP").toString();
_ModelCamera.net.remoteIp = _configIni->value("三维建模/remoteIp").toString();
_ModelCamera.net.remotePort =
_configIni->value("三维建模/remotePort").toInt();
_ModelCamera.net.localIp = _configIni->value("三维建模/localIp").toString();
_ModelCamera.net.localPort = _configIni->value("三维建模/localPort").toInt();
// 读取配置信息
_GDDC.net.remoteIp = _configIni->value("Pod/IP").toString();
_GDDC.net.remotePort = _configIni->value("Pod/Port").toInt();
_lLink.url = _configIni->value("L-Link/IP").toString();
_adHocNetwork.url = _configIni->value("HocNetwork/IP").toString();
_satelliteComm.url = _configIni->value("SatelliteComm/IP").toString();
_rescueLoad.url = _configIni->value("RescueLoading/IP").toString();
_pdtLoad.url = _configIni->value("PdtLoading/IP").toString();
_ModelCamera.net.remoteIp =
_configIni->value("ModelCamera/remoteIp").toString();
_ModelCamera.net.remotePort =
_configIni->value("ModelCamera/remotePort").toInt();
_ModelCamera.net.localIp =
_configIni->value("ModelCamera/localIp").toString();
_ModelCamera.net.localPort =
_configIni->value("ModelCamera/localPort").toInt();
// 存储配置信息到MAP容器中
_allParamMap.insert({"光电吊舱", _GDDC});
_allParamMap.insert({"L链", _lLink});
_allParamMap.insert({"宽带自组网", _adHocNetwork});
_allParamMap.insert({"机载卫通", _satelliteComm});
_allParamMap.insert({"三维建模", _ModelCamera});
// 存储配置信息到MAP容器中
_allParamMap.insert({"Pod", _GDDC});
_allParamMap.insert({"L-Link", _lLink});
_allParamMap.insert({"HocNetwork", _adHocNetwork});
_allParamMap.insert({"SatelliteComm", _satelliteComm});
_allParamMap.insert({"ModelCamera", _ModelCamera});
_allParamMap.insert({"RescueLoading", _rescueLoad});
_allParamMap.insert({"PdtLoading", _pdtLoad});
// 显示到配置页面
ui->GDDCLineEdit->setText(_GDDC.net.remoteIp);
ui->lLinkLineEdit->setText(_lLink.url);
ui->netLineEdit->setText(_adHocNetwork.url);
ui->sateliteLineEdit->setText(_satelliteComm.url);
ui->modelCameraLineEditRemoteIp->setText(_ModelCamera.net.remoteIp);
ui->modelCameraLineEditRemotePort->setText(
QString::number(_ModelCamera.net.remotePort));
ui->modelCameraLineEditLocalIp->setText(_ModelCamera.net.localIp);
ui->modelCameraLineEditLocalPort->setText(
QString::number(_ModelCamera.net.localPort));
// 显示到配置页面
ui->GDDCLineEdit->setText(_GDDC.net.remoteIp);
ui->lLinkLineEdit->setText(_lLink.url);
ui->netLineEdit->setText(_adHocNetwork.url);
ui->sateliteLineEdit->setText(_satelliteComm.url);
ui->RescueLineEdit->setText(_rescueLoad.url);
ui->PdtLineEdit->setText(_pdtLoad.url);
ui->modelCameraLineEditRemoteIp->setText(_ModelCamera.net.remoteIp);
ui->modelCameraLineEditRemotePort->setText(
QString::number(_ModelCamera.net.remotePort));
ui->modelCameraLineEditLocalIp->setText(_ModelCamera.net.localIp);
ui->modelCameraLineEditLocalPort->setText(
QString::number(_ModelCamera.net.localPort));
// 发送消息到其他页面
emit sendOneSet(GDDC, _GDDC);
emit sendOneSet(L_Link, _lLink);
emit sendOneSet(Adhoc_Network, _adHocNetwork);
emit sendOneSet(Satelite_Comm, _satelliteComm);
emit sendOneSet(ModelCamera, _ModelCamera);
// 发送消息到其他页面
emit sendOneSet(GDDC, _GDDC);
emit sendOneSet(L_Link, _lLink);
emit sendOneSet(Adhoc_Network, _adHocNetwork);
emit sendOneSet(Satelite_Comm, _satelliteComm);
emit sendOneSet(ModelCamera, _ModelCamera);
}
void HomePageSetingWidget::on_GDDCPushButton_clicked() {
// 写参数到配置文件
_GDDC.net.remoteIp = ui->GDDCLineEdit->text();
_configIni->setValue("光电吊舱/IP", _GDDC.net.remoteIp);
emit sendOneSet(GDDC, _GDDC);
// 写参数到配置文件
_GDDC.net.remoteIp = ui->GDDCLineEdit->text();
_configIni->setValue("Pod/IP", _GDDC.net.remoteIp);
emit sendOneSet(GDDC, _GDDC);
}
void HomePageSetingWidget::on_lLinkButton_clicked() {
// 写参数到配置文件
_lLink.url = ui->lLinkLineEdit->text();
_configIni->setValue("L/IP", _lLink.url);
emit sendOneSet(L_Link, _lLink);
// 写参数到配置文件
_lLink.url = ui->lLinkLineEdit->text();
_configIni->setValue("L-Link/IP", _lLink.url);
emit sendOneSet(L_Link, _lLink);
}
void HomePageSetingWidget::on_netButton_clicked() {
// 写参数到配置文件
_adHocNetwork.url = ui->netLineEdit->text();
_configIni->setValue("宽带自组网/IP", _adHocNetwork.url);
emit sendOneSet(Adhoc_Network, _adHocNetwork);
// 写参数到配置文件
_adHocNetwork.url = ui->netLineEdit->text();
_configIni->setValue("HocNetwork/IP", _adHocNetwork.url);
emit sendOneSet(Adhoc_Network, _adHocNetwork);
}
void HomePageSetingWidget::on_sateliteButton_clicked() {
// 写参数到配置文件
_satelliteComm.url = ui->sateliteLineEdit->text();
_configIni->setValue("机载卫通/IP", _satelliteComm.url);
emit sendOneSet(Satelite_Comm, _satelliteComm);
// 写参数到配置文件
_satelliteComm.url = ui->sateliteLineEdit->text();
_configIni->setValue("SatelliteComm/IP", _satelliteComm.url);
emit sendOneSet(Satelite_Comm, _satelliteComm);
}
//搜救载荷
void HomePageSetingWidget::on_RescueButton_clicked()
{
// 写参数到配置文件
_rescueLoad.url = ui->RescueLineEdit->text();
_configIni->setValue("RescueLoading/IP", _rescueLoad.url);
emit sendOneSet(RescueLoading, _rescueLoad);
}
void HomePageSetingWidget::on_PdtButton_clicked()
{
// 写参数到配置文件
_pdtLoad.url = ui->PdtLineEdit->text();
_configIni->setValue("PdtLoading/IP", _pdtLoad.url);
emit sendOneSet(PdtLoading, _pdtLoad);
}
// 三维相机
void HomePageSetingWidget::on_modelCameraButton_clicked() {
// 写参数到配置文件
_ModelCamera.net.remoteIp = ui->modelCameraLineEditRemoteIp->text();
_ModelCamera.net.remotePort =
ui->modelCameraLineEditRemotePort->text().toInt();
_ModelCamera.net.localIp = ui->modelCameraLineEditLocalIp->text();
_ModelCamera.net.localPort = ui->modelCameraLineEditLocalPort->text().toInt();
_configIni->setValue("三维建模/remoteIp", _ModelCamera.net.remoteIp);
_configIni->setValue("三维建模/remotePort", _ModelCamera.net.remotePort);
_configIni->setValue("三维建模/localIp", _ModelCamera.net.localIp);
_configIni->setValue("三维建模/localPort", _ModelCamera.net.localPort);
emit sendOneSet(ModelCamera, _ModelCamera);
// 写参数到配置文件
_ModelCamera.net.remoteIp = ui->modelCameraLineEditRemoteIp->text();
_ModelCamera.net.remotePort =
ui->modelCameraLineEditRemotePort->text().toInt();
_ModelCamera.net.localIp = ui->modelCameraLineEditLocalIp->text();
_ModelCamera.net.localPort =
ui->modelCameraLineEditLocalPort->text().toInt();
_configIni->setValue("ModelCamera/remoteIp", _ModelCamera.net.remoteIp);
_configIni->setValue("ModelCamera/remotePort", _ModelCamera.net.remotePort);
_configIni->setValue("ModelCamera/localIp", _ModelCamera.net.localIp);
_configIni->setValue("ModelCamera/localPort", _ModelCamera.net.localPort);
emit sendOneSet(ModelCamera, _ModelCamera);
}
// 一键配置
void HomePageSetingWidget::on_oneKeyButton_clicked() {
on_GDDCPushButton_clicked();
on_lLinkButton_clicked();
on_netButton_clicked();
on_sateliteButton_clicked();
on_modelCameraButton_clicked();
on_GDDCPushButton_clicked();
on_lLinkButton_clicked();
on_netButton_clicked();
on_sateliteButton_clicked();
on_modelCameraButton_clicked();
on_sateliteButton_clicked();
on_RescueButton_clicked();
on_PdtButton_clicked();
}
/*************************************************
* @func getAllParam
@ -106,5 +140,7 @@ void HomePageSetingWidget::on_oneKeyButton_clicked() {
* @param
**************************************************/
std::unordered_map<QString, settingStruct> HomePageSetingWidget::getAllParam() {
return _allParamMap;
return _allParamMap;
}

@ -23,7 +23,9 @@ private:
settingStruct _GDDC; // 光电吊舱
settingStruct _lLink; // L链
settingStruct _adHocNetwork; // 自组网
settingStruct _satelliteComm; // PDT
settingStruct _satelliteComm; // 卫通
settingStruct _rescueLoad; // 搜救载荷
settingStruct _pdtLoad; // PDT
settingStruct _ModelCamera; // 三维建模
std::unordered_map<QString, settingStruct> _allParamMap; // 存储所有设置信息
public:
@ -41,7 +43,9 @@ public:
L_Link,
Adhoc_Network,
Satelite_Comm,
ModelCamera
ModelCamera,
RescueLoading,
PdtLoading
};
private slots:
@ -50,10 +54,11 @@ private slots:
void on_sateliteButton_clicked();
void on_oneKeyButton_clicked();
void on_GDDCPushButton_clicked();
void on_modelCameraButton_clicked();
void on_RescueButton_clicked();
void on_PdtButton_clicked();
signals:
signals:
// 发送信号给网页显示
void sendOneSet(unsigned char, settingStruct);
};

@ -7,14 +7,14 @@
<x>0</x>
<y>0</y>
<width>725</width>
<height>532</height>
<height>611</height>
</rect>
</property>
<property name="windowTitle">
<string>设置</string>
</property>
<property name="windowIcon">
<iconset resource="../../mainwindow.qrc">
<iconset>
<normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
@ -222,6 +222,9 @@
<string>L链</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
@ -229,9 +232,6 @@
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@ -281,21 +281,139 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelCameraGroupBox">
<widget class="QGroupBox" name="RescueGroupBox">
<property name="title">
<string>三维建模</string>
<string>搜救载荷</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<layout class="QGridLayout" name="gridLayout_6">
<item row="0" column="1">
<widget class="QLineEdit" name="RescueLineEdit"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<widget class="QLabel" name="label_9">
<property name="text">
<string>远端IP:</string>
<string>IP:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_9">
<item>
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="RescueButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>100</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>设置</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="PdtGroupBox">
<property name="title">
<string>PDT</string>
</property>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="1">
<widget class="QLineEdit" name="modelCameraLineEditRemoteIp"/>
<widget class="QLineEdit" name="PdtLineEdit"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>IP:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<item>
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="PdtButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>100</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>设置</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="modelCameraGroupBox">
<property name="title">
<string>三维建模</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="2">
<widget class="QLabel" name="label_6">
<property name="text">
@ -303,29 +421,25 @@
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="modelCameraLineEditRemotePort"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<item row="0" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>本地IP:</string>
<string>远端IP:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="modelCameraLineEditRemotePort"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="modelCameraLineEditLocalIp"/>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_8">
<property name="text">
<string>本地端口:</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="modelCameraLineEditLocalPort"/>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="modelCameraLineEditRemoteIp"/>
</item>
<item row="1" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
@ -371,6 +485,20 @@
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>本地IP:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_8">
<property name="text">
<string>本地端口:</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -437,8 +565,6 @@
</item>
</layout>
</widget>
<resources>
<include location="../../mainwindow.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

@ -195,9 +195,9 @@ bool DecodeStream::isValidAVFrame(AVFrame *frame) {
}
// 如果需要,添加更多判断条件,例如时间戳或关键帧检查
if (frame->pts == AV_NOPTS_VALUE) {
return false;
}
// if (frame->pts == AV_NOPTS_VALUE) {
// return false;
// }
return true; // 如果所有条件都通过,则认为 AVFrame 有效
}
@ -214,10 +214,10 @@ bool DecodeStream::isValidAVPacket(AVPacket *pkt) {
}
// 检查时间戳
if (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE) {
qDebug() << "Invalid AVPacket: pts or dts is AV_NOPTS_VALUE.\n";
return false;
}
// if (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE) {
// qDebug() << "Invalid AVPacket: pts or dts is AV_NOPTS_VALUE.\n";
// return false;
// }
// 检查流索引(如果是多流)
if (pkt->stream_index < 0) {

@ -41,7 +41,7 @@ bool ReadStream::openFile(const QString &url) {
&m_formatContext, // 返回解封装上下文
url.toUtf8().data(), // 打开视频地址
nullptr, // 如果非null此参数强制使用特定的输入格式。自动选择解封装器文件格式
&dict); // 参数设置
&dict); // 参数设置
// 释放参数字典
if (dict) {
av_dict_free(&dict);
@ -288,10 +288,10 @@ bool ReadStream::isValidAVPacket(AVPacket *pkt) {
}
// 检查时间戳
if (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE) {
qDebug() << "Invalid AVPacket 0: pts or dts is AV_NOPTS_VALUE.\n";
return false;
}
// if (pkt->pts == AV_NOPTS_VALUE || pkt->dts == AV_NOPTS_VALUE) {
// qDebug() << "Invalid AVPacket 0: pts or dts is AV_NOPTS_VALUE.\n";
// return false;
// }
// 检查流索引(如果是多流)
if (pkt->stream_index < 0) {

@ -1,92 +1,96 @@
#include "cwebengineview.h"
#include "CWebEngineView.h"
#include <QWidget>
#include "CWebEngineView.h"
CWebEngineView::CWebEngineView(QWidget *parent) : QWebEngineView(parent) {
// 记录首页URL
connect(
this, &QWebEngineView::loadFinished, this,
[&](bool ok) {
if (ok) {
firstURL = page()->url();
}
},
Qt::SingleShotConnection);
// 获取当前页面的profile
QWebEngineProfile *profile = page()->profile();
// 记录首页URL
connect(
this, &QWebEngineView::loadFinished, this,
[&](bool ok) {
if (ok) {
firstURL = page()->url();
}
},
Qt::SingleShotConnection);
// 获取当前页面的profile
QWebEngineProfile *profile = page()->profile();
// 启用缓存
profile->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
profile->setPersistentCookiesPolicy(
QWebEngineProfile::ForcePersistentCookies);
// 启用缓存
profile->setHttpCacheType(QWebEngineProfile::MemoryHttpCache);
profile->setPersistentCookiesPolicy(
QWebEngineProfile::ForcePersistentCookies);
// 获取设置对象
QWebEngineSettings *settings = page()->settings();
// 获取设置对象
QWebEngineSettings *settings = page()->settings();
// 启用硬件加速
settings->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled, true);
settings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
// 启用硬件加速
settings->setAttribute(QWebEngineSettings::Accelerated2dCanvasEnabled,
true);
settings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
// 其他设置
settings->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
settings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls,
true);
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls,
true);
// 其他设置
settings->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
settings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls,
true);
settings->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls,
true);
}
CWebEngineView::~CWebEngineView() {
QWebEnginePage *page = this->page();
if (page != nullptr) {
delete page;
}
QWebEnginePage *page = this->page();
if (page != nullptr) {
delete page;
}
}
QWebEngineView *
CWebEngineView::createWindow(QWebEnginePage::WebWindowType type) {
if (type == QWebEnginePage::WebBrowserTab) {
QWebEnginePage *new_page =
new QWebEnginePage(this->page()->profile(), this);
this->setPage(new_page);
connect(new_page, &QWebEnginePage::destroyed, new_page,
[new_page]() { new_page->deleteLater(); });
// connect(page(), &QWebEnginePage::urlChanged, this, [&](const QUrl &url) {
// qDebug() << "**********GoTo URL:" << url.toString();
// });
}
return this;
QWebEngineView *CWebEngineView::createWindow(
QWebEnginePage::WebWindowType type) {
if (type == QWebEnginePage::WebBrowserTab) {
QWebEnginePage *new_page =
new QWebEnginePage(this->page()->profile(), this);
this->setPage(new_page);
connect(new_page, &QWebEnginePage::destroyed, new_page, [new_page]() {
new_page->deleteLater();
});
// connect(page(), &QWebEnginePage::urlChanged, this, [&](const QUrl
// &url) {
// qDebug() << "**********GoTo URL:" << url.toString();
// });
}
return this;
}
void CWebEngineView::contextMenuEvent(QContextMenuEvent *event) {
// 创建一个新的菜单
QMenu menu(this);
menu.setStyleSheet(
"QMenu{background-color: white;color: black;}QMenu::item:selected "
"{background-color: lightgray;color: black;}");
// 添加自定义菜单项
QAction *forwardAction = menu.addAction("前进");
QAction *backAction = menu.addAction("后退");
QAction *reloadAction = menu.addAction("刷新");
// 显示菜单
QAction *action = menu.exec(event->globalPos());
if (action) {
QWebEnginePage *page = this->page();
if (action == forwardAction) {
if (page->history()->canGoForward()) {
page->triggerAction(QWebEnginePage::Forward);
}
} else if (action == backAction) {
if (page->history()->canGoBack()) {
page->triggerAction(QWebEnginePage::Back);
} else if (page->url() == page->history()->items()[0].url()) {
page->load(firstURL);
}
// qDebug() << "**********History URL:"
// << this->page()->history()->items()[0].url().toString();
} else if (action == reloadAction) {
page->triggerAction(QWebEnginePage::Reload);
// 创建一个新的菜单
QMenu menu(this);
menu.setStyleSheet(
"QMenu{background-color: white;color: black;}QMenu::item:selected "
"{background-color: lightgray;color: black;}");
// 添加自定义菜单项
QAction *forwardAction = menu.addAction("前进");
QAction *backAction = menu.addAction("后退");
QAction *reloadAction = menu.addAction("刷新");
// 显示菜单
QAction *action = menu.exec(event->globalPos());
if (action) {
QWebEnginePage *page = this->page();
if (action == forwardAction) {
if (page->history()->canGoForward()) {
page->triggerAction(QWebEnginePage::Forward);
}
} else if (action == backAction) {
if (page->history()->canGoBack()) {
page->triggerAction(QWebEnginePage::Back);
} else if (page->url() == page->history()->items()[0].url()) {
page->load(firstURL);
}
// qDebug() << "**********History URL:"
// << this->page()->history()->items()[0].url().toString();
} else if (action == reloadAction) {
page->triggerAction(QWebEnginePage::Reload);
}
}
}
}

@ -2,7 +2,7 @@
global::global() {}
QString g_SoftwareVersion = "版本号V1.1.0.2_20241202";
QString g_SoftwareVersion = "版本号V1.1.0.7_20250218";
NotifyManager *g_notifyManager = nullptr;

@ -5,7 +5,13 @@
#include <QAction>
#include <QFile>
#include <QFlags>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkCookie>
#include <QToolBar>
#include <QWebEngineCookieStore>
#include <QWebEngineProfile>
#include "Src/HomePage/homepagesetingwidget.h"
#include "Src/WebPage/CustomWebEnginePage.h"
@ -87,7 +93,7 @@ void MainWindow::initWindow() {
// 使用类中的get方法获取配置文件中的IP
m_allSetMap = m_HomePagedlg->settingWidget->getAllParam();
m_GDDCdlg->setGlobalSetMap(m_allSetMap);
qDebug() << "=============设备配置================";
/*qDebug() << "=============设备配置================";
qDebug() << "光电吊舱------";
qDebug() << "远端ip" << m_allSetMap["光电吊舱"].net.remoteIp;
qDebug() << "L链----------";
@ -100,49 +106,72 @@ void MainWindow::initWindow() {
qDebug() << "远端ip:" << m_allSetMap["三维建模"].net.remoteIp;
qDebug() << "远端端口:" << m_allSetMap["三维建模"].net.remotePort;
qDebug() << "本地ip:" << m_allSetMap["三维建模"].net.localIp;
qDebug() << "本地端口:" << m_allSetMap["三维建模"].net.localPort;
qDebug() << "本地端口:" << m_allSetMap["三维建模"].net.localPort;*/
// mWeb = new CWebEngineView();
// mWeb->setPage(new CustomWebEnginePage());
// mWeb->load(QUrl("http://192.168.150.1"));
lLinkWeb = new CWebEngineView();
lLinkWeb->setPage(new CustomWebEnginePage());
lLinkWeb->load(QUrl(m_allSetMap["L链"].url));
lLinkWeb->load(QUrl(m_allSetMap["L-Link"].url));
connect(lLinkWeb->page(), &QWebEnginePage::loadFinished, this, [=]() {
// QString jsScript = R"(
// var usernameField =
// document.querySelector('input[name="username"]'); if
// (usernameField) {
// usernameField.value = 'admin'; // 填充用户名
// }
// )";
QString jsScript = R"(
var button = document.getElementById('clickButt');
if (button) {
button.onclick = function(event){
var usernameField =
document.querySelector('input[name="username"]');
if(usernameField) {
usernameField.value = 'admin'; // 填充用户名
}
}
}
)";
lLinkWeb->page()->runJavaScript(jsScript);
});
adHocNetworkWeb = new CWebEngineView();
adHocNetworkWeb->setPage(new CustomWebEnginePage());
adHocNetworkWeb->load(QUrl(m_allSetMap["宽带自组网"].url));
adHocNetworkWeb->load(QUrl(m_allSetMap["HocNetwork"].url));
satelliteCommWeb = new CWebEngineView();
satelliteCommWeb->setPage(new CustomWebEnginePage());
satelliteCommWeb->load(QUrl(m_allSetMap["机载卫通"].url));
satelliteCommWeb->load(QUrl(m_allSetMap["SatelliteComm"].url));
m_ModelCameraDlg = new ModelCameraDlg(this);
emit m_ModelCameraDlg->sendNetParam_signal(m_allSetMap["三维建模"].net);
emit m_ModelCameraDlg->sendNetParam_signal(m_allSetMap["ModelCamera"].net);
// 接收主页面设置窗口的url数据传递并设置
connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendOneSet,
this, [&](unsigned char urlIndex, settingStruct settings) {
switch (urlIndex) {
case HomePageSetingWidget::GDDC:
// dosomething
break;
case HomePageSetingWidget::L_Link:
lLinkWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::Adhoc_Network:
adHocNetworkWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::Satelite_Comm:
satelliteCommWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::ModelCamera:
m_ModelCameraDlg->sendNetParam_signal(settings.net);
break;
default:
break;
}
});
connect(
m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendOneSet, this,
[&](unsigned char urlIndex, settingStruct settings) {
switch (urlIndex) {
case HomePageSetingWidget::GDDC:
// dosomething
m_GDDCdlg->m_DlgGDDCSet->initPullURL(settings.net.remoteIp);
break;
case HomePageSetingWidget::L_Link:
lLinkWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::Adhoc_Network:
adHocNetworkWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::Satelite_Comm:
satelliteCommWeb->load(QUrl(settings.url));
break;
case HomePageSetingWidget::ModelCamera:
m_ModelCameraDlg->sendNetParam_signal(settings.net);
break;
default:
break;
}
});
// 设置栈窗口,多页面共享同一窗口
ui->stackedWidget->addWidget(m_SDFPDlg);
@ -394,3 +423,19 @@ void MainWindow::initNotifyManager() {
g_notifyManager->setDisplayTime(2000);
g_notifyManager->setNotifyWndSize(300, 60);
}
bool MainWindow::nativeEvent(const QByteArray &eventType, void *message,
qintptr *result) {
#ifdef Q_OS_WIN
MSG *msg = (MSG *)message;
if (msg->message == WM_SYSCOMMAND) {
if (61587 == msg->wParam) { // 单击事件
return true;
}
if (61539 == msg->wParam) { // 双击事件
return true;
}
}
#endif
return QMainWindow::nativeEvent(eventType, message, result);
}

@ -20,9 +20,9 @@
#include "Src/RescueLoad/rescueloadwidget.h"
#ifdef Q_OS_WIN
// #include <QWindow>
// #include <WinUser.h>
// #include <windows.h>
#include "windows.h"
#include "windowsx.h"
#pragma comment(lib, "user32.lib")
#endif
QT_BEGIN_NAMESPACE
namespace Ui {
@ -46,6 +46,10 @@ public:
void initWindow();
void initButton();
void initSignalSlot();
protected:
bool nativeEvent(const QByteArray &eventType, void *message,
qintptr *result);
private slots:
void toolButton_clicked();
void toolButton_2_clicked();

@ -261,7 +261,7 @@
</action>
<action name="toolbar_action2">
<property name="icon">
<iconset resource="mainwindow.qrc">
<iconset>
<normaloff>:/res/GDDC.png</normaloff>:/res/GDDC.png</iconset>
</property>
<property name="text">
@ -273,7 +273,7 @@
</action>
<action name="toolbar_action3">
<property name="icon">
<iconset resource="mainwindow.qrc">
<iconset>
<normaloff>:/res/LChain.png</normaloff>:/res/LChain.png</iconset>
</property>
<property name="text">
@ -347,8 +347,6 @@
</property>
</action>
</widget>
<resources>
<include location="mainwindow.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

Loading…
Cancel
Save