fix: 合并main,解决冲突

pull/6/head
cbwu 7 months ago
commit 7827e364c7

File diff suppressed because it is too large Load Diff

@ -2,227 +2,197 @@
#include "ui_gddcSet.h" #include "ui_gddcSet.h"
#include <QSettings> #include <QSettings>
//#pragma execution_character_set(“utf-8”) // #pragma execution_character_set(“utf-8”)
GDDCSet::GDDCSet(QWidget *parent)
: QWidget(parent)
, ui(new Ui::GDDCSet)
{
ui->setupUi(this);
initWindow();
initParam();
initUDPSocket();
GDDCSet::GDDCSet(QWidget *parent) : QWidget(parent), ui(new Ui::GDDCSet) {
ui->setupUi(this);
initWindow();
initParam();
initUDPSocket();
} }
GDDCSet::~GDDCSet() GDDCSet::~GDDCSet() { delete ui; }
{ void GDDCSet::initWindow() {
delete ui; this->setWindowTitle("通信设置");
setAttribute(Qt::WA_QuitOnClose, false);
// 交付时隐藏部分未开发接口
ui->label_5->hide();
ui->label_6->hide();
ui->lineEdit_playURL2->hide();
ui->pushButton_ConnectURL2->hide();
ui->groupBox_2->hide();
ui->radioButton_NetCtrlTCP->hide();
} }
void GDDCSet::initWindow() void GDDCSet::initUDPSocket() {}
{ void GDDCSet::initParam() {
this->setWindowTitle("通信设置"); // m_myPairNetwork("",0,"",0);
setAttribute(Qt::WA_QuitOnClose,false); // QSettings setting("./sentence.ini",QSettings::IniFormat);
// setting.setIniCodec(QTextCodec::codecForName("UTF-8")); //重点
//交付时隐藏部分未开发接口
ui->label_5->hide(); ui->comboBox_streamType->addItem("RTSP");
ui->label_6->hide(); // ui->comboBox_streamType->addItem("UDP Raw");
ui->lineEdit_playURL2->hide(); // ui->comboBox_streamType->addItem("UDP 422");
ui->pushButton_ConnectURL2->hide(); // ui->comboBox_streamType->addItem("UDP TS");
ui->groupBox_2->hide(); ui->comboBox_playURL1->addItem("rtsp://192.168.55.65:554/live/track0");
ui->radioButton_NetCtrlTCP->hide(); ui->comboBox_playURL1->addItem(
"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid");
ui->comboBox_playURL1->setEditable(true);
/*"rtsp://192.168.1.160:554/live/track0"*/
/*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/
ui->radioButton_NetCtrlUDP->setChecked(true);
ui->radioButton_NetCtrlTCP->setChecked(false);
// 读取本机网络设备
QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
QString name = QDir::currentPath() + "./config.ini";
m_configIniPath = name.toLatin1();
char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
char inBuf[100];
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1",
inBuf, 100, strSysIniName);
m_playURL2 = QString::fromUtf8(inBuf);
ui->lineEdit_playURL2->setText(m_playURL2);
::GetPrivateProfileStringA("光电吊舱-推流", "推流URL", "-1", inBuf, 100,
strSysIniName);
m_pushURL = QString::fromUtf8(inBuf);
ui->lineEdit_pushURL->setText(m_pushURL);
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100,
strSysIniName);
m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端Port", "-1", inBuf, 100,
strSysIniName);
m_myPairNetwork.setRemotePort(atoi(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地IP", "-1", inBuf, 100,
strSysIniName);
m_myPairNetwork.setLocalIP(QString::fromUtf8(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地Port", "-1", inBuf, 100,
strSysIniName);
m_myPairNetwork.setLocalPort(atoi(inBuf));
ui->lineEdit_NetCtrlRemoteIp->setText(m_myPairNetwork.getRemoteIP());
ui->lineEdit_NetCtrlRemotePort->setText(
QString::number(m_myPairNetwork.getRemotePort()));
ui->lineEdit_NetCtrlLocalIp->setText(m_myPairNetwork.getLocalIP());
ui->lineEdit_NetCtrlLocalPort->setText(
QString::number(m_myPairNetwork.getLocalPort()));
} }
void GDDCSet::initUDPSocket() // 视频连接-显示窗口1-连接
{ void GDDCSet::on_pushButton_ConnectURL1_clicked() {
saveDataToLocalIni();
if (ui->pushButton_ConnectURL1->text() == "连接") {
emit SignalStartConnect(1);
ui->pushButton_ConnectURL1->setText("断开");
} else {
emit SignalStopConnect(1);
ui->pushButton_ConnectURL1->setText("连接");
}
} }
void GDDCSet::initParam()
{
//m_myPairNetwork("",0,"",0);
// QSettings setting("./sentence.ini",QSettings::IniFormat);
// setting.setIniCodec(QTextCodec::codecForName("UTF-8")); //重点
ui->comboBox_streamType->addItem("RTSP");
//ui->comboBox_streamType->addItem("UDP Raw");
//ui->comboBox_streamType->addItem("UDP 422");
//ui->comboBox_streamType->addItem("UDP TS");
ui->comboBox_playURL1->addItem("rtsp://192.168.1.160:554/live/track0");
ui->comboBox_playURL1->addItem("rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid");
ui->comboBox_playURL1->setEditable(true);
/*"rtsp://192.168.1.160:554/live/track0"*/
/*"rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid"*/
ui->radioButton_NetCtrlUDP->setChecked(true);
ui->radioButton_NetCtrlTCP->setChecked(false);
//读取本机网络设备
QString urlFile = QCoreApplication::applicationDirPath()+"/config.ini";
QString name = QDir::currentPath()+"./config.ini";
m_configIniPath = name.toLatin1();
char* strSysIniName = m_configIniPath.data();//系统配置文件路径
char inBuf[100];
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1", inBuf, 100, strSysIniName);
m_playURL2 = QString::fromUtf8(inBuf);
ui->lineEdit_playURL2->setText(m_playURL2);
::GetPrivateProfileStringA("光电吊舱-推流", "推流URL", "-1", inBuf, 100, strSysIniName);
m_pushURL = QString::fromUtf8(inBuf);
ui->lineEdit_pushURL->setText(m_pushURL);
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100, strSysIniName);
m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端Port", "-1", inBuf, 100, strSysIniName);
m_myPairNetwork.setRemotePort(atoi(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地IP", "-1", inBuf, 100, strSysIniName);
m_myPairNetwork.setLocalIP(QString::fromUtf8(inBuf));
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地Port", "-1", inBuf, 100, strSysIniName);
m_myPairNetwork.setLocalPort(atoi(inBuf));
ui->lineEdit_NetCtrlRemoteIp->setText(m_myPairNetwork.getRemoteIP());
ui->lineEdit_NetCtrlRemotePort->setText(QString::number(m_myPairNetwork.getRemotePort()));
ui->lineEdit_NetCtrlLocalIp->setText(m_myPairNetwork.getLocalIP());
ui->lineEdit_NetCtrlLocalPort->setText(QString::number(m_myPairNetwork.getLocalPort()));
} // 视频连接-显示窗口2-连接
//视频连接-显示窗口1-连接 void GDDCSet::on_pushButton_ConnectURL2_clicked() {
void GDDCSet::on_pushButton_ConnectURL1_clicked() saveDataToLocalIni();
{ if (ui->pushButton_ConnectURL2->text() == "连接") {
saveDataToLocalIni(); emit SignalStartConnect(2);
if(ui->pushButton_ConnectURL1->text()=="连接") ui->pushButton_ConnectURL2->setText("断开");
{ } else {
emit SignalStartConnect(1); emit SignalStopConnect(2);
ui->pushButton_ConnectURL1->setText("断开"); ui->pushButton_ConnectURL2->setText("连接");
} }
else
{
emit SignalStopConnect(1);
ui->pushButton_ConnectURL1->setText("连接");
}
} }
//视频连接-显示窗口2-连接 // 串口控制-刷新
void GDDCSet::on_pushButton_ConnectURL2_clicked() void GDDCSet::on_pushButton_serialControlRefalsh_clicked() {
{ saveDataToLocalIni();
saveDataToLocalIni();
if(ui->pushButton_ConnectURL2->text()=="连接")
{
emit SignalStartConnect(2);
ui->pushButton_ConnectURL2->setText("断开");
}
else
{
emit SignalStopConnect(2);
ui->pushButton_ConnectURL2->setText("连接");
}
} }
//串口控制-刷新 // 串口控制-连接
void GDDCSet::on_pushButton_serialControlRefalsh_clicked() void GDDCSet::on_pushButton_serialControlConnect_clicked() {
{ saveDataToLocalIni();
saveDataToLocalIni(); if (ui->pushButton_serialControlConnect->text() == "连接") {
emit SignalStartConnect(3);
ui->pushButton_serialControlConnect->setText("断开");
} else {
emit SignalStopConnect(3);
ui->pushButton_serialControlConnect->setText("连接");
}
} }
//串口控制-连接 // 网络控制-连接
void GDDCSet::on_pushButton_serialControlConnect_clicked() void GDDCSet::on_pushButton_NetCtrlConnect_clicked() {
{ saveDataToLocalIni();
saveDataToLocalIni(); if (ui->pushButton_NetCtrlConnect->text() == "连接") {
if(ui->pushButton_serialControlConnect->text()=="连接") if (ui->radioButton_NetCtrlUDP->isChecked()) {
{ emit SignalStartConnect(4);
emit SignalStartConnect(3); } else {
ui->pushButton_serialControlConnect->setText("断开"); emit SignalStartConnect(5);
}
else
{
emit SignalStopConnect(3);
ui->pushButton_serialControlConnect->setText("连接");
} }
}
//网络控制-连接 ui->pushButton_NetCtrlConnect->setText("断开");
void GDDCSet::on_pushButton_NetCtrlConnect_clicked() } else {
{ emit SignalStopConnect(4);
saveDataToLocalIni(); emit SignalStopConnect(5);
if(ui->pushButton_NetCtrlConnect->text()=="连接") ui->pushButton_NetCtrlConnect->setText("连接");
{ }
if(ui->radioButton_NetCtrlUDP->isChecked())
{
emit SignalStartConnect(4);
}
else
{
emit SignalStartConnect(5);
}
ui->pushButton_NetCtrlConnect->setText("断开");
}
else
{
emit SignalStopConnect(4);
emit SignalStopConnect(5);
ui->pushButton_NetCtrlConnect->setText("连接");
}
} }
//推流 // 推流
void GDDCSet::on_pushButton_pushURL_clicked() void GDDCSet::on_pushButton_pushURL_clicked() {
{ saveDataToLocalIni();
saveDataToLocalIni(); if (ui->pushButton_pushURL->text() == "推送") {
if(ui->pushButton_pushURL->text()=="推送") emit SignalStartConnect(6);
{ ui->pushButton_pushURL->setText("停止推送");
emit SignalStartConnect(6); } else {
ui->pushButton_pushURL->setText("停止推送"); emit SignalStopConnect(6);
} ui->pushButton_pushURL->setText("推送");
else }
{
emit SignalStopConnect(6);
ui->pushButton_pushURL->setText("推送");
}
} }
//保存数据至本地ini文件 // 保存数据至本地ini文件
void GDDCSet::saveDataToLocalIni() void GDDCSet::saveDataToLocalIni() {
{ char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
char* strSysIniName = m_configIniPath.data();//系统配置文件路径 char *inBuf;
char* inBuf; QByteArray ba;
QByteArray ba;
m_myPairNetwork.setLocalIP(ui->lineEdit_NetCtrlLocalIp->text());
ba = m_myPairNetwork.getLocalIP().toLocal8Bit();
m_myPairNetwork.setLocalIP(ui->lineEdit_NetCtrlLocalIp->text()); inBuf = ba.data(); // toLatin1,toUtf8
ba = m_myPairNetwork.getLocalIP().toLocal8Bit(); ::WritePrivateProfileStringA("光电吊舱-网络控制", "本地IP", inBuf,
inBuf = ba.data();//toLatin1,toUtf8 strSysIniName);
::WritePrivateProfileStringA("光电吊舱-网络控制", "本地IP", inBuf, strSysIniName);
m_myPairNetwork.setLocalPort(ui->lineEdit_NetCtrlLocalPort->text().toInt());
m_myPairNetwork.setLocalPort(ui->lineEdit_NetCtrlLocalPort->text().toInt()); _itoa_s(
_itoa_s(m_myPairNetwork.getLocalPort(),inBuf,10,10);//要转换的数字,存放转换结果的字符串,存放结果的字符数组长度,转化的进制数2表示2进制10表示10进制 m_myPairNetwork.getLocalPort(), inBuf, 10,
::WritePrivateProfileStringA("光电吊舱-网络控制", "本地Port", inBuf, strSysIniName); 10); // 要转换的数字,存放转换结果的字符串,存放结果的字符数组长度,转化的进制数2表示2进制10表示10进制
::WritePrivateProfileStringA("光电吊舱-网络控制", "本地Port", inBuf,
m_myPairNetwork.setRemoteIP(ui->lineEdit_NetCtrlRemoteIp->text()); strSysIniName);
ba = m_myPairNetwork.getRemoteIP().toLocal8Bit();
inBuf = ba.data(); m_myPairNetwork.setRemoteIP(ui->lineEdit_NetCtrlRemoteIp->text());
::WritePrivateProfileStringA("光电吊舱-网络控制", "远端IP", inBuf, strSysIniName); ba = m_myPairNetwork.getRemoteIP().toLocal8Bit();
inBuf = ba.data();
m_myPairNetwork.setRemotePort(ui->lineEdit_NetCtrlRemotePort->text().toInt()); ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端IP", inBuf,
_itoa_s(m_myPairNetwork.getRemotePort(),inBuf,10,10); strSysIniName);
::WritePrivateProfileStringA("光电吊舱-网络控制", "远端Port", inBuf, strSysIniName);
m_myPairNetwork.setRemotePort(ui->lineEdit_NetCtrlRemotePort->text().toInt());
m_playURL2 = ui->lineEdit_playURL2->text(); _itoa_s(m_myPairNetwork.getRemotePort(), inBuf, 10, 10);
ba = m_playURL2.toLocal8Bit(); ::WritePrivateProfileStringA("光电吊舱-网络控制", "远端Port", inBuf,
inBuf = ba.data(); strSysIniName);
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf, strSysIniName);
m_playURL2 = ui->lineEdit_playURL2->text();
m_pushURL = ui->lineEdit_pushURL->text(); ba = m_playURL2.toLocal8Bit();
ba = m_pushURL.toLocal8Bit(); inBuf = ba.data();
inBuf = ba.data(); ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", inBuf,
::WritePrivateProfileStringA("光电吊舱-推流", "推流URL", inBuf, strSysIniName); strSysIniName);
m_playURL1 = ui->comboBox_playURL1->currentText(); m_pushURL = ui->lineEdit_pushURL->text();
ba = m_pushURL.toLocal8Bit();
inBuf = ba.data();
::WritePrivateProfileStringA("光电吊舱-推流", "推流URL", inBuf,
strSysIniName);
m_playURL1 = ui->comboBox_playURL1->currentText();
} }

File diff suppressed because it is too large Load Diff

@ -137,29 +137,6 @@
</size> </size>
</property> </property>
</widget> </widget>
<widget class="QTableView" name="tableViewShowIState">
<property name="geometry">
<rect>
<x>750</x>
<y>130</y>
<width>256</width>
<height>192</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
</widget>
<widget class="QWidget" name="subWidgetCmd" native="true">
<property name="geometry">
<rect>
<x>260</x>
<y>380</y>
<width>331</width>
<height>71</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButShowStatePage"> <widget class="QPushButton" name="pushButShowStatePage">
<property name="geometry"> <property name="geometry">
<rect> <rect>

@ -1,11 +1,16 @@
SOURCES += \ SOURCES += \
$$PWD/deviceStateDlg.cpp \
$$PWD/homepagesetingwidget.cpp \ $$PWD/homepagesetingwidget.cpp \
$$PWD/homepagedlg.cpp $$PWD/homepagedlg.cpp \
$$PWD/networkDetection.cpp
HEADERS += \ HEADERS += \
$$PWD/deviceStateDlg.h \
$$PWD/homepagesetingwidget.h \ $$PWD/homepagesetingwidget.h \
$$PWD/homepagedlg.h $$PWD/homepagedlg.h \
$$PWD/networkDetection.h
FORMS += \ FORMS += \
$$PWD/deviceStateDlg.ui \
$$PWD/homepagesetingwidget.ui \ $$PWD/homepagesetingwidget.ui \
$$PWD/homepagedlg.ui \ $$PWD/homepagedlg.ui \

@ -0,0 +1,285 @@
#include "deviceStateDlg.h"
#include "ui_deviceStateDlg.h"
deviceStateDlg::deviceStateDlg(QWidget *parent)
: QWidget(parent), ui(new Ui::deviceStateDlg) {
ui->setupUi(this);
initWindow();
initParam();
}
deviceStateDlg::~deviceStateDlg() {
stopNetDetn();
delete m_timer;
delete ui;
}
void deviceStateDlg::initWindow() {
// 嵌入到主窗口
setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
hide();
QString stateButtonStyle =
/*正常情况下样式*/
"QPushButton{"
//"image: url(:/res/lamp/grey.png)-23px 0px no-repeat;"
"border-radius: 13px;"
"border-style: solid;"
"border-width: 1px;"
"padding: 5px;"
"}";
ui->pushButton_state_GDDC->setStyleSheet(stateButtonStyle);
ui->pushButton_state_LLink->setStyleSheet(stateButtonStyle);
ui->pushButton_state_3DCamra->setStyleSheet(stateButtonStyle);
ui->pushButton_state_KuSatelliteComm->setStyleSheet(stateButtonStyle);
ui->pushButton_state_PDT->setStyleSheet(stateButtonStyle);
ui->pushButton_state_adHocNetwork->setStyleSheet(stateButtonStyle);
ui->pushButton_state_rescue->setStyleSheet(stateButtonStyle);
//"image: url(:/res/lamp/grey.png)-23px 0px no-repeat;"
QIcon greyIcon(":/res/lamp/grey.png");
ui->pushButton_state_GDDC->setIcon(greyIcon);
ui->pushButton_state_LLink->setIcon(greyIcon);
ui->pushButton_state_3DCamra->setIcon(greyIcon);
ui->pushButton_state_KuSatelliteComm->setIcon(greyIcon);
ui->pushButton_state_PDT->setIcon(greyIcon);
ui->pushButton_state_adHocNetwork->setIcon(greyIcon);
ui->pushButton_state_rescue->setIcon(greyIcon);
ui->pushButton_state_GDDC->setIconSize(QSize(35, 35));
ui->pushButton_state_LLink->setIconSize(QSize(35, 35));
ui->pushButton_state_3DCamra->setIconSize(QSize(35, 35));
ui->pushButton_state_KuSatelliteComm->setIconSize(QSize(35, 35));
ui->pushButton_state_PDT->setIconSize(QSize(35, 35));
ui->pushButton_state_adHocNetwork->setIconSize(QSize(35, 35));
ui->pushButton_state_rescue->setIconSize(QSize(35, 35));
ui->lineEdit_1_GDDC->setText("--");
ui->lineEdit_2_GDDC->setText("--");
ui->lineEdit_3_GDDC->setText("--");
ui->lineEdit_1_Llink->setText("--");
ui->lineEdit_2_Llink->setText("--");
ui->lineEdit_3_Llink->setText("--");
ui->lineEdit_1_3DCamra->setText("--");
ui->lineEdit_2_3DCamra->setText("--");
ui->lineEdit_3_3DCamra->setText("--");
ui->lineEdit_1_KuSatelliteComm->setText("--");
ui->lineEdit_2_KuSatelliteComm->setText("--");
ui->lineEdit_3_KuSatelliteComm->setText("--");
ui->lineEdit_1_PDT->setText("--");
ui->lineEdit_2_PDT->setText("--");
ui->lineEdit_3_PDT->setText("--");
ui->lineEdit_1_adHocNetwork->setText("--");
ui->lineEdit_2_adHocNetwork->setText("--");
ui->lineEdit_3_adHocNetwork->setText("--");
ui->lineEdit_1_rescue->setText("--");
ui->lineEdit_2_rescue->setText("--");
ui->lineEdit_3_rescue->setText("--");
m_timer = new QTimer();
m_timer->setInterval(2000);
connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimeOut()));
m_timer->start();
}
void deviceStateDlg::initParam() {
// 172.10.1.183 -n 2 -w 500"
cmdlist[0] << "/c" << "ping" << "172.10.1.183";
cmdlist[1] << "/c" << "ping" << "172.10.1.183";
cmdlist[2] << "/c" << "ping" << "www.baidu.com";
cmdlist[3] << "/c" << "ping" << "www.baidu.com";
startNetDetn();
}
// 接收线程结果
void deviceStateDlg::receiveResult(int id, QString result) {
// qDebug() << result;
switch (id) {
case 0:
if (result == "在线") {
ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/green.png"));
} else {
ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/red.png"));
}
break;
case 1:
if (result == "在线") {
ui->pushButton_state_LLink->setIcon(QIcon(":/res/lamp/green.png"));
} else {
ui->pushButton_state_LLink->setIcon(QIcon(":/res/lamp/red.png"));
}
break;
case 2:
if (result == "在线") {
ui->pushButton_state_adHocNetwork->setIcon(QIcon(":/res/lamp/green.png"));
} else {
ui->pushButton_state_adHocNetwork->setIcon(QIcon(":/res/lamp/red.png"));
}
break;
case 3:
if (result == "在线") {
ui->pushButton_state_KuSatelliteComm->setIcon(
QIcon(":/res/lamp/green.png"));
} else {
ui->pushButton_state_KuSatelliteComm->setIcon(
QIcon(":/res/lamp/red.png"));
}
break;
default:
break;
}
}
// 接收更改的IP
void deviceStateDlg::setDeviceIP(int id, QString ip) {
QString strIp;
strIp = stringIPSelect(ip);
switch (id) {
case HomePageSetingWidget::L_Link:
cmdlist[1].clear();
cmdlist[1] << "/c" << "ping" << strIp;
m_networkDetection[1]->DyChangeCmdList(cmdlist[1]); // 更新到网络检测线程
break;
case HomePageSetingWidget::Adhoc_Network:
cmdlist[2].clear();
cmdlist[2] << "/c" << "ping" << strIp;
m_networkDetection[2]->DyChangeCmdList(cmdlist[2]); // 更新到网络检测线程
break;
case HomePageSetingWidget::Satelite_Comm:
cmdlist[3].clear();
cmdlist[3] << "/c" << "ping" << strIp;
m_networkDetection[3]->DyChangeCmdList(cmdlist[3]); // 更新到网络检测线程
break;
default:
break;
}
}
// 字符串网络地址截取
QString deviceStateDlg::stringIPSelect(QString str) {
int start, end; // str = https://192.168.1.2/22
start = str.indexOf("//");
if (start != 0) {
start += 2;
QString str2 = str.remove(0, start); // 192.168.1.2/224//115
end = str2.indexOf("/");
if (end != -1) {
end += 1;
str2.truncate(end);
return str2;
} else {
return str2;
}
} else {
end = str.indexOf("/");
if (end != -1) {
end += 1;
str.truncate(end);
return str;
} else {
return str;
}
}
// index = str.indexOf("http://")
}
// 开始网络监测
void deviceStateDlg::startNetDetn() {
for (int i = 0; i < deviceNum; ++i) {
m_networkDetection[i] = new networkDetection();
m_workerThread[i] = new QThread();
m_networkDetection[i]->moveToThread(m_workerThread[i]);
m_workerThread[i]->start();
connect(m_networkDetection[i], SIGNAL(resultReady(int, QString)), this,
SLOT(receiveResult(int, QString))); // 接收线程运行结果
switch (i) {
case 0:
connect(this, &deviceStateDlg::startThread0, m_networkDetection[i],
&networkDetection::dowork); // 线程开始处理数据
emit startThread0(i, cmdlist[i]); // 启用线程信号
break;
case 1:
connect(this, &deviceStateDlg::startThread1, m_networkDetection[i],
&networkDetection::dowork); // 线程开始处理数据
emit startThread1(i, cmdlist[i]); // 启用线程信号
break;
case 2:
connect(this, &deviceStateDlg::startThread2, m_networkDetection[i],
&networkDetection::dowork); // 线程开始处理数据
emit startThread2(i, cmdlist[i]); // 启用线程信号
break;
case 3:
connect(this, &deviceStateDlg::startThread3, m_networkDetection[i],
&networkDetection::dowork); // 线程开始处理数据
emit startThread3(i, cmdlist[i]); // 启用线程信号
break;
case 4:
connect(this, &deviceStateDlg::startThread4, m_networkDetection[i],
&networkDetection::dowork); // 线程开始处理数据
emit startThread4(i, cmdlist[i]); // 启用线程信号
break;
default:
break;
}
}
}
// 停止网络监测
void deviceStateDlg::stopNetDetn() {
for (int i = 0; i < deviceNum; ++i) {
m_networkDetection[i]->stop(); // 线程退出循环
m_workerThread[i]->quit(); // 退出线程请求
m_workerThread[i]->wait(); // 使线程正常退出。
m_workerThread[i]->deleteLater();
m_workerThread[i] = nullptr;
m_networkDetection[i]->deleteLater();
m_networkDetection[i] = nullptr;
}
}
void deviceStateDlg::on_pushButton_homePage_GDDC_clicked() {
emit switchToDevicePage(0);
}
void deviceStateDlg::on_pushButton_homePage_LLink_clicked() {
emit switchToDevicePage(1);
}
void deviceStateDlg::on_pushButton_homePage_adHocNetwork_clicked() {
emit switchToDevicePage(2);
}
void deviceStateDlg::on_pushButton_homePage_rescue_clicked() {
emit switchToDevicePage(5);
}
void deviceStateDlg::on_pushButton_homePage_PDT_clicked() {
emit switchToDevicePage(3);
}
void deviceStateDlg::on_pushButton_homePage_3DCamra_clicked() {
emit switchToDevicePage(6);
}
void deviceStateDlg::on_pushButton_homePage_KuSatelliteComm_clicked() {
emit switchToDevicePage(4);
}
void deviceStateDlg::onTimeOut() {
// QProcess *m_process = new QProcess();
// QStringList m_cmd;
// // m_cmd << "/c" << "ping" << "baidu.com -n 2 -w 1000";
// m_cmd << "/c" << "ping" << "172.10.1.183";
// QString result;
// m_process->start("cmd", m_cmd);
// m_process->waitForFinished(); // 等待指令执行完毕
// result = m_process->readAll(); // 获取指令执行结果
// qDebug() << result;
// if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线
// {
// qDebug() << "在线";
// ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/green.png"));
// } else {
// qDebug() << "离线";
// ui->pushButton_state_GDDC->setIcon(QIcon(":/res/lamp/red.png"));
// }
// m_process->kill();
}

@ -0,0 +1,64 @@
#ifndef DEVICESTATEDLG_H
#define DEVICESTATEDLG_H
#include "homepagesetingwidget.h"
#include "networkDetection.h"
#include <QProcess>
#include <QThread>
#include <QTimer>
#include <QWidget>
#define deviceNum 5
namespace Ui {
class deviceStateDlg;
}
class deviceStateDlg : public QWidget {
Q_OBJECT
public:
explicit deviceStateDlg(QWidget *parent = nullptr);
~deviceStateDlg();
void initWindow();
void initParam();
signals:
void switchToDevicePage(int id); // 发送切换到设备页信号
// QVector<void (*)(int, QStringList)> startThread(int, QStringList);
void startThread0(int, QStringList); // 启动线程
void startThread1(int, QStringList); // 启动线程
void startThread2(int, QStringList); // 启动线程
void startThread3(int, QStringList); // 启动线程
void startThread4(int, QStringList); // 启动线程
private slots:
void on_pushButton_homePage_GDDC_clicked();
void on_pushButton_homePage_LLink_clicked();
void on_pushButton_homePage_adHocNetwork_clicked();
void on_pushButton_homePage_rescue_clicked();
void on_pushButton_homePage_PDT_clicked();
void on_pushButton_homePage_3DCamra_clicked();
void on_pushButton_homePage_KuSatelliteComm_clicked();
void receiveResult(int, QString); // 接收线程结果
private:
Ui::deviceStateDlg *ui;
public:
QStringList cmdlist[deviceNum]; // 0光电吊舱1L链 2 自组网3ku卫通 4
networkDetection *m_networkDetection[deviceNum];
QThread *m_workerThread[deviceNum];
QTimer *m_timer;
void setDeviceIP(int, QString);
QString stringIPSelect(QString);
void startNetDetn();
void stopNetDetn();
public slots:
void onTimeOut();
};
#endif // DEVICESTATEDLG_H

File diff suppressed because it is too large Load Diff

@ -5,90 +5,94 @@
#include <qsettings.h> #include <qsettings.h>
HomePageDlg::HomePageDlg(QWidget *parent) HomePageDlg::HomePageDlg(QWidget *parent)
: QWidget(parent) : QWidget(parent), ui(new Ui::HomePageDlg), _lLinkIp(""), _adHocNetwork(""),
, ui(new Ui::HomePageDlg) _satelliteComm("") {
, _lLinkIp("") ui->setupUi(this);
, _adHocNetwork("") QPalette palette;
, _satelliteComm("") // 设置主窗口背景颜色
{ palette.setColor(QPalette::Window, QColor(50, 50, 50));
ui->setupUi(this); this->setPalette(palette);
QPalette palette; // 嵌入到主窗口
//设置主窗口背景颜色 setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
palette.setColor(QPalette::Window,QColor(50, 50, 50)); hide();
this->setPalette(palette);
//嵌入到主窗口
setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
hide();
settingWidget = new HomePageSetingWidget(this); settingWidget = new HomePageSetingWidget(this);
settingWidget->setWindowFlags(Qt::Window); // 设置为独立窗口 settingWidget->setWindowFlags(Qt::Window); // 设置为独立窗口
initSettingUrl(); m_deviceStateDlg = new deviceStateDlg(this); // 状态嵌入窗口
initButton(); m_deviceStateDlg->show();
}
HomePageDlg::~HomePageDlg() initSettingUrl();
{ initButton();
delete ui;
} }
HomePageDlg::~HomePageDlg() { delete ui; }
/************************************************* /*************************************************
* @func getUrl * @func getUrl
* @brief url * @brief url
* @param * @param
**************************************************/ **************************************************/
void HomePageDlg::getUrl(std::unordered_map<QString, QString>& urlMap) void HomePageDlg::getUrl(std::unordered_map<QString, QString> &urlMap) {
{ urlMap = _urlMap;
urlMap = _urlMap;
} }
/************************************************* /*************************************************
* @func * @func
* @brief * @brief
* @param * @param
* @return * @return
**************************************************/ **************************************************/
void HomePageDlg::initSettingUrl() void HomePageDlg::initSettingUrl() {
{ QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
QString urlFile = QCoreApplication::applicationDirPath()+"/config.ini"; std::unique_ptr<QSettings> configIni =
std::unique_ptr<QSettings> configIni = std::make_unique<QSettings>(urlFile,QSettings::IniFormat); std::make_unique<QSettings>(urlFile, QSettings::IniFormat);
_lLinkIp = configIni->value("L链/IP").toString(); _lLinkIp = configIni->value("L链/IP").toString();
_adHocNetwork = configIni->value("宽带自组网/IP").toString(); _adHocNetwork = configIni->value("宽带自组网/IP").toString();
_satelliteComm = configIni->value("机载卫通/IP").toString(); _satelliteComm = configIni->value("机载卫通/IP").toString();
_urlMap.insert({"L链",_lLinkIp}); _urlMap.insert({"L链", _lLinkIp});
_urlMap.insert({"宽带自组网",_adHocNetwork}); _urlMap.insert({"宽带自组网", _adHocNetwork});
_urlMap.insert({"机载卫通",_satelliteComm}); _urlMap.insert({"机载卫通", _satelliteComm});
settingWidget->setUrl(_urlMap); settingWidget->setUrl(_urlMap);
} }
/** /**
* @brief HomePageDlg::initButton * @brief HomePageDlg::initButton
*/ */
void HomePageDlg::initButton() void HomePageDlg::initButton() {
{ QIcon icon;
QIcon icon; icon.addFile(":/res/settings.png");
icon.addFile(":/res/settings.png"); m_settingBtn = new QPushButton;
QPushButton* btn = new QPushButton; m_settingBtn->setParent(this);
btn->setParent(this); m_settingBtn->setMinimumSize(40, 40);
btn->setMinimumSize(40,40); m_settingBtn->setMaximumSize(40, 40);
btn->setMaximumSize(40,40); m_settingBtn->setIconSize(QSize(30, 30));
btn->setIconSize(QSize(30,30)); m_settingBtn->setIcon(icon);
btn->setIcon(icon);
//点击主页按钮弹出设置页面1 // 点击主页按钮弹出设置页面1
connect(btn,&QPushButton::clicked,this,[&](){ connect(m_settingBtn, &QPushButton::clicked, this, [&]() {
//qDebug() << "homepagedlg上的设置按钮点击了"; // qDebug() << "homepagedlg上的设置按钮点击了";
if(settingWidget->isVisible()) if (settingWidget->isVisible())
settingWidget->close(); settingWidget->close();
else else
settingWidget->show(); settingWidget->show();
}); });
}
void HomePageDlg::on_pushButton_clicked() // 设置页面设置ip后更新网络检测页面ip
{ connect(settingWidget, &HomePageSetingWidget::sendOnlyUrl, this,
emit sendUrl(_urlMap); [&](unsigned char urlIndex, QString url) {
m_deviceStateDlg->setDeviceIP(urlIndex, url);
});
} }
void HomePageDlg::on_pushButton_clicked() { emit sendUrl(_urlMap); }
// 区域重绘
void HomePageDlg::resizeEvent(QResizeEvent *event) {
double HomePageHeight = (double)(this->height());
double HomePageWidth = (double)(this->width());
m_settingBtn->setGeometry(HomePageWidth - 40, 0, 40, 40);
m_deviceStateDlg->move(0.5 * (HomePageWidth - m_deviceStateDlg->width()),
0.5 * (HomePageHeight - m_deviceStateDlg->height()));
}

@ -4,6 +4,8 @@
#include <QWidget> #include <QWidget>
#include <unordered_map> #include <unordered_map>
#include "Src/HomePage/homepagesetingwidget.h" #include "Src/HomePage/homepagesetingwidget.h"
#include "QPushButton"
#include "deviceStateDlg.h"
namespace Ui { namespace Ui {
class HomePageDlg; class HomePageDlg;
@ -18,7 +20,7 @@ public:
~HomePageDlg(); ~HomePageDlg();
QPixmap m_pixmap; QPixmap m_pixmap;
HomePageSetingWidget* settingWidget; HomePageSetingWidget* settingWidget;
deviceStateDlg* m_deviceStateDlg;
void getUrl(std::unordered_map<QString,QString>& urlMap); void getUrl(std::unordered_map<QString,QString>& urlMap);
private: private:
Ui::HomePageDlg *ui; Ui::HomePageDlg *ui;
@ -29,6 +31,10 @@ private:
QString _adHocNetwork; QString _adHocNetwork;
QString _satelliteComm; QString _satelliteComm;
std::unordered_map<QString,QString> _urlMap; std::unordered_map<QString,QString> _urlMap;
QPushButton* m_settingBtn;
protected:
void resizeEvent(QResizeEvent *event);
signals: signals:
void sendUrl(std::unordered_map<QString,QString> urlMap); void sendUrl(std::unordered_map<QString,QString> urlMap);
private slots: private slots:

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>892</width> <width>940</width>
<height>653</height> <height>460</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -20,60 +20,13 @@
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<item row="1" column="0"> <item row="0" column="0">
<widget class="QGroupBox" name="groupBox"> <widget class="QFrame" name="frame">
<property name="title"> <property name="frameShape">
<string>GroupBox</string> <enum>QFrame::Shape::StyledPanel</enum>
</property> </property>
</widget> <property name="frameShadow">
</item> <enum>QFrame::Shadow::Raised</enum>
<item row="1" column="3">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>GroupBox</string>
</property>
</widget>
</item>
<item row="0" column="3">
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QWidget" name="image" native="true">
<property name="toolTip">
<string/>
</property>
<property name="statusTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string/>
</property>
<property name="styleSheet">
<string notr="true">image: url(:/res/981csNew.png);</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_2" native="true"/>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="1" column="1">
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>GroupBox</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>GroupBox</string>
</property> </property>
</widget> </widget>
</item> </item>

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>725</width> <width>725</width>
<height>443</height> <height>404</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -17,247 +17,279 @@
<iconset resource="../../mainwindow.qrc"> <iconset resource="../../mainwindow.qrc">
<normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset> <normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset>
</property> </property>
<widget class="QFrame" name="frame_2"> <layout class="QHBoxLayout" name="horizontalLayout">
<property name="geometry"> <item>
<rect> <widget class="QFrame" name="frame_2">
<x>30</x> <property name="frameShape">
<y>10</y> <enum>QFrame::Shape::StyledPanel</enum>
<width>661</width> </property>
<height>181</height> <property name="frameShadow">
</rect> <enum>QFrame::Shadow::Raised</enum>
</property> </property>
<property name="frameShape"> <layout class="QVBoxLayout" name="verticalLayout_3">
<enum>QFrame::Shape::StyledPanel</enum> <item>
</property> <widget class="QFrame" name="frame">
<property name="frameShadow"> <property name="frameShape">
<enum>QFrame::Shadow::Raised</enum> <enum>QFrame::Shape::StyledPanel</enum>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <property name="frameShadow">
<item> <enum>QFrame::Shadow::Raised</enum>
<widget class="QFrame" name="frame"> </property>
<property name="frameShape"> <layout class="QVBoxLayout" name="verticalLayout">
<enum>QFrame::Shape::StyledPanel</enum> <item>
</property> <widget class="QGroupBox" name="netGroupBox_2">
<property name="frameShadow"> <property name="title">
<enum>QFrame::Shadow::Raised</enum> <string>卫通</string>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QGridLayout" name="gridLayout_3">
<item> <item row="0" column="0">
<widget class="QGroupBox" name="lLinkGroupBox"> <widget class="QLabel" name="label_3">
<property name="title">
<string>L链</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>IP:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<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>60</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="lLinkButton">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text"> <property name="text">
<string>设置</string> <string>IP:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QLineEdit" name="sateliteLineEdit"/>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<spacer name="horizontalSpacer_3">
<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="sateliteButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" 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> </layout>
</item> </widget>
</layout> </item>
</widget> <item>
</item> <widget class="QGroupBox" name="netGroupBox">
<item> <property name="title">
<widget class="QGroupBox" name="netGroupBox"> <string>宽带自组网</string>
<property name="title"> </property>
<string>宽带自组网</string> <layout class="QGridLayout" name="gridLayout_2">
</property> <item row="0" column="1">
<layout class="QGridLayout" name="gridLayout_2"> <widget class="QLineEdit" name="netLineEdit"/>
<item row="4" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer_2">
<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>60</width>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
<item> <item row="0" column="0">
<widget class="QPushButton" name="netButton"> <widget class="QLabel" name="label_2">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text"> <property name="text">
<string>设置</string> <string>IP:</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> <item row="0" column="2">
</item> <layout class="QHBoxLayout" name="horizontalLayout_3">
<item row="0" column="0"> <item>
<widget class="QLabel" name="label_2"> <spacer name="horizontalSpacer_2">
<property name="text"> <property name="orientation">
<string>IP:</string> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
</widget> <property name="sizeType">
</item> <enum>QSizePolicy::Policy::Fixed</enum>
<item row="0" column="1"> </property>
<widget class="QLineEdit" name="netLineEdit"/> <property name="sizeHint" stdset="0">
</item> <size>
</layout> <width>20</width>
</widget> <height>20</height>
</item> </size>
<item> </property>
<widget class="QGroupBox" name="netGroupBox_2"> </spacer>
<property name="title"> </item>
<string>卫通</string> <item>
</property> <widget class="QPushButton" name="netButton">
<layout class="QGridLayout" name="gridLayout_3"> <property name="sizePolicy">
<item row="0" column="0"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<widget class="QLabel" name="label_3"> <horstretch>100</horstretch>
<property name="text"> <verstretch>0</verstretch>
<string>IP:</string> </sizepolicy>
</property> </property>
</widget> <property name="minimumSize">
</item> <size>
<item row="0" column="1"> <width>100</width>
<widget class="QLineEdit" name="sateliteLineEdit"/> <height>0</height>
</item> </size>
<item row="4" column="1"> </property>
<layout class="QHBoxLayout" name="horizontalLayout_4"> <property name="maximumSize">
<item> <size>
<spacer name="horizontalSpacer_3"> <width>200</width>
<property name="orientation"> <height>16777215</height>
<enum>Qt::Orientation::Horizontal</enum> </size>
</property> </property>
<property name="sizeType"> <property name="text">
<enum>QSizePolicy::Policy::Fixed</enum> <string>设置</string>
</property> </property>
<property name="sizeHint" stdset="0"> </widget>
<size> </item>
<width>60</width> </layout>
<height>20</height>
</size>
</property>
</spacer>
</item> </item>
<item> </layout>
<widget class="QPushButton" name="sateliteButton"> </widget>
<property name="maximumSize"> </item>
<size> <item>
<width>100</width> <widget class="QGroupBox" name="lLinkGroupBox">
<height>16777215</height> <property name="title">
</size> <string>L链</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text"> <property name="text">
<string>设置</string> <string>IP:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QLineEdit" name="lLinkLineEdit"/>
</item>
<item row="0" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<spacer name="horizontalSpacer">
<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="lLinkButton">
<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> </layout>
</item> </widget>
</layout> </item>
</widget> </layout>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<spacer name="horizontalSpacer_4">
<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>450</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="oneKeyButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>160</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>一键设置</string>
</property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer_5"> <layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="orientation"> <item>
<enum>Qt::Orientation::Horizontal</enum> <spacer name="horizontalSpacer_4">
</property> <property name="orientation">
<property name="sizeType"> <enum>Qt::Orientation::Horizontal</enum>
<enum>QSizePolicy::Policy::Fixed</enum> </property>
</property> <property name="sizeType">
<property name="sizeHint" stdset="0"> <enum>QSizePolicy::Policy::Fixed</enum>
<size> </property>
<width>15</width> <property name="sizeHint" stdset="0">
<height>20</height> <size>
</size> <width>450</width>
</property> <height>20</height>
</spacer> </size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="oneKeyButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>160</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>一键设置</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<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>15</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item> </item>
</layout> </layout>
</item> </widget>
</layout> </item>
</widget> </layout>
</widget> </widget>
<resources> <resources>
<include location="../../mainwindow.qrc"/> <include location="../../mainwindow.qrc"/>

@ -0,0 +1,42 @@
#include "networkDetection.h"
networkDetection::networkDetection(QObject *parent) : QObject(parent) {
flagRun = true;
CmdListChanged = false;
m_process = new QProcess(this);
}
networkDetection::~networkDetection() { delete m_process; }
void networkDetection::dowork(int id, QStringList cmdlist) {
m_cmd = cmdlist;
m_id = id;
QString result;
while (flagRun) {
m_process->start("cmd", m_cmd);
m_process->waitForFinished(); // 等待指令执行完毕
result = m_process->readAll(); // 获取指令执行结果
// qDebug() << result;
if (result.contains(QString("TTL="))) // 若包含TTL=字符串则认为网络在线
{
// qDebug() << "在线";
emit resultReady(m_id, "在线");
} else {
// qDebug() << "离线";
emit resultReady(m_id, "离线");
}
// if (CmdListChanged) {
// CmdListChanged = false;
// return;
// }
// QThread::sleep(2); // 加sleep降低CPU占用率
}
}
void networkDetection::stop() { flagRun = false; }
void networkDetection::DyChangeCmdList(QStringList changeCmdList) {
m_cmd.clear();
m_cmd = changeCmdList;
CmdListChanged = true;
}

@ -0,0 +1,35 @@
#ifndef NETWORKDETECTION_H
#define NETWORKDETECTION_H
#include <QDebug>
#include <QObject>
#include <QProcess>
#include <QThread>
// #include <synchapi.h>
class networkDetection : public QObject {
Q_OBJECT
public:
networkDetection(QObject *parent = nullptr);
~networkDetection();
public slots:
void dowork(int, QStringList);
void stop();
signals:
void resultReady(int, QString);
public:
void DyChangeCmdList(QStringList);
private:
int m_id;
QStringList m_cmd;
public:
bool flagRun; // 运行标志
bool CmdListChanged; // 指令列表改变标志
QProcess *m_process; // 执行CMD
};
#endif // NETWORKDETECTION_H

@ -51,4 +51,5 @@ void EncodeModelCamera::ReadData() {
if (crc16 == Rcrc) { if (crc16 == Rcrc) {
emit UDP_Receive(array); emit UDP_Receive(array);
} }
cameraUDP->writeDatagram(cmdArray, QHostAddress("172.10.1.237"), 10001);
} }

@ -1,151 +1,163 @@
#include "cffmpeg_decode.h" #include "cffmpeg_decode.h"
Cffmpeg_decode::Cffmpeg_decode() Cffmpeg_decode::Cffmpeg_decode() {
{ fmtCtx = avformat_alloc_context();
fmtCtx = avformat_alloc_context(); pkt = av_packet_alloc();
pkt = av_packet_alloc(); yuvFrame = av_frame_alloc();
yuvFrame = av_frame_alloc(); rgbFrame = av_frame_alloc();
rgbFrame = av_frame_alloc();
} }
Cffmpeg_decode::~Cffmpeg_decode() Cffmpeg_decode::~Cffmpeg_decode() {
{ if (!pkt)
if(!pkt) av_packet_free(&pkt); av_packet_free(&pkt);
if(!yuvFrame) av_frame_free(&yuvFrame); if (!yuvFrame)
if(!rgbFrame) av_frame_free(&rgbFrame); av_frame_free(&yuvFrame);
if(!videoCodecCtx) avcodec_free_context(&videoCodecCtx); if (!rgbFrame)
if(!videoCodecCtx) avcodec_close(videoCodecCtx); av_frame_free(&rgbFrame);
if(!fmtCtx) avformat_close_input(&fmtCtx); if (!videoCodecCtx)
avcodec_free_context(&videoCodecCtx);
if (!videoCodecCtx)
avcodec_close(videoCodecCtx);
if (!fmtCtx)
avformat_close_input(&fmtCtx);
} }
void Cffmpeg_decode::setUrl(QString url) void Cffmpeg_decode::setUrl(QString url) { _url = url; }
{
_url = url; bool Cffmpeg_decode::open_input_file() {
} if (_url.isEmpty())
return 0;
bool Cffmpeg_decode::open_input_file()
{ AVDictionary *avdic = NULL;
if(_url.isEmpty()) return 0; // 设置缓存大小1080p可将值调大
av_dict_set(&avdic, "buffer_size", "2048000", 0);
AVDictionary* avdic = NULL; // 以udp方式打开如果以tcp方式打开将udp替换为tcp
av_dict_set(&avdic, "buffer_size", "2048000", 0); //设置缓存大小1080p可将值调大 av_dict_set(&avdic, "rtsp_transport", "tcp", 0);
av_dict_set(&avdic, "rtsp_transport", "udp", 0); //以udp方式打开如果以tcp方式打开将udp替换为tcp // 设置超时断开连接时间,单位微秒//listen_timeout
av_dict_set(&avdic, "listen_timeout", "2", 0); //设置超时断开连接时间,单位微秒 // av_dict_set(&avdic, "listen_timeout", "200000", 0);
av_dict_set(&avdic, "max_delay", "3000", 0); //设置最大时延 av_dict_set(&avdic, "stimeout", "200000", 0);
av_dict_set(&avdic, "tune", "zerolatency", 0); av_dict_set(&avdic, "max_delay", "3", 0); // 设置最大时延
av_dict_set(&avdic, "preset", "ultrafast", 0); av_dict_set(&avdic, "tune", "zerolatency", 0);
fmtCtx->flags |= AVFMT_FLAG_NONBLOCK; av_dict_set(&avdic, "preset", "ultrafast", 0);
if(avformat_open_input(&fmtCtx,_url.toLocal8Bit().data(),NULL,&avdic)<0){ fmtCtx->flags |= AVFMT_FLAG_NONBLOCK;
printf("Cannot open input file.\n"); if (avformat_open_input(&fmtCtx, _url.toUtf8().data(), NULL, &avdic) < 0) {
return 0; printf("Cannot open input file.\n");
} return 0;
}
if(avformat_find_stream_info(fmtCtx,NULL)<0){
printf("Cannot find any stream in file.\n"); if (avformat_find_stream_info(fmtCtx, NULL) < 0) {
return 0; printf("Cannot find any stream in file.\n");
return 0;
}
int streamCnt = fmtCtx->nb_streams;
for (int i = 0; i < streamCnt; i++) {
if (fmtCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
videoStreamIndex = i;
continue;
} }
}
if (videoStreamIndex == -1) {
printf("Cannot find video stream in file.\n");
return 0;
}
AVCodecParameters *videoCodecPara =
fmtCtx->streams[videoStreamIndex]->codecpar;
if (!(videoCodec = avcodec_find_decoder(videoCodecPara->codec_id))) {
printf("Cannot find valid decode codec.\n");
return 0;
}
if (!(videoCodecCtx = avcodec_alloc_context3(videoCodec))) {
printf("Cannot find valid decode codec context.\n");
return 0;
}
if (avcodec_parameters_to_context(videoCodecCtx, videoCodecPara) < 0) {
printf("Cannot initialize parameters.\n");
return 0;
}
if (avcodec_open2(videoCodecCtx, videoCodec, NULL) < 0) {
printf("Cannot open codec.\n");
return 0;
}
img_ctx = sws_getContext(videoCodecCtx->width, videoCodecCtx->height,
videoCodecCtx->pix_fmt, videoCodecCtx->width,
videoCodecCtx->height, AV_PIX_FMT_RGB32, SWS_BICUBIC,
NULL, NULL, NULL);
numBytes = av_image_get_buffer_size(AV_PIX_FMT_RGB32, videoCodecCtx->width,
videoCodecCtx->height, 1);
out_buffer = (unsigned char *)av_malloc(numBytes * sizeof(unsigned char));
int res = av_image_fill_arrays(rgbFrame->data, rgbFrame->linesize, out_buffer,
AV_PIX_FMT_RGB32, videoCodecCtx->width,
videoCodecCtx->height, 1);
if (res < 0) {
qDebug() << "Fill arrays failed.";
return 0;
}
return true;
}
int streamCnt=fmtCtx->nb_streams; // 线程里持续执行
for(int i=0;i<streamCnt;i++){ void Cffmpeg_decode::run() {
if(fmtCtx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO){ if (!open_input_file()) {
videoStreamIndex = i; qDebug() << "Please open video file first.";
continue; emit sendConnectFail(1);
IsstopPlay = true;
return;
}
while (av_read_frame(fmtCtx, pkt) >= 0) {
if (pkt->stream_index == videoStreamIndex) {
if (avcodec_send_packet(videoCodecCtx, pkt) >= 0) {
int ret;
while ((ret = avcodec_receive_frame(videoCodecCtx, yuvFrame)) >= 0) {
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
return;
else if (ret < 0) {
fprintf(stderr, "Error during decoding\n");
exit(1);
}
sws_scale(img_ctx, yuvFrame->data, yuvFrame->linesize, 0,
videoCodecCtx->height, rgbFrame->data, rgbFrame->linesize);
QImage img(out_buffer, videoCodecCtx->width, videoCodecCtx->height,
QImage::Format_RGB32);
emit sendQImage(img);
// int m_timeframe= ((double)videoCodecCtx->framerate.den /
// videoCodecCtx->framerate.num)*1000;
QThread::msleep(28);
} }
}
av_packet_unref(pkt);
} }
if (IsstopPlay) {
if(videoStreamIndex==-1){ break;
printf("Cannot find video stream in file.\n");
return 0;
}
AVCodecParameters *videoCodecPara = fmtCtx->streams[videoStreamIndex]->codecpar;
if(!(videoCodec = avcodec_find_decoder(videoCodecPara->codec_id))){
printf("Cannot find valid decode codec.\n");
return 0;
}
if(!(videoCodecCtx = avcodec_alloc_context3(videoCodec))){
printf("Cannot find valid decode codec context.\n");
return 0;
}
if(avcodec_parameters_to_context(videoCodecCtx,videoCodecPara)<0){
printf("Cannot initialize parameters.\n");
return 0;
}
if(avcodec_open2(videoCodecCtx,videoCodec,NULL)<0){
printf("Cannot open codec.\n");
return 0;
}
img_ctx = sws_getContext(videoCodecCtx->width,
videoCodecCtx->height,
videoCodecCtx->pix_fmt,
videoCodecCtx->width,
videoCodecCtx->height,
AV_PIX_FMT_RGB32,
SWS_BICUBIC,NULL,NULL,NULL);
numBytes = av_image_get_buffer_size(AV_PIX_FMT_RGB32,videoCodecCtx->width,videoCodecCtx->height,1);
out_buffer = (unsigned char *)av_malloc(numBytes*sizeof(unsigned char));
int res = av_image_fill_arrays(
rgbFrame->data,rgbFrame->linesize,
out_buffer,AV_PIX_FMT_RGB32,
videoCodecCtx->width,videoCodecCtx->height,1);
if(res<0){
qDebug()<<"Fill arrays failed.";
return 0;
} }
}
return true; qDebug() << "All video play done";
} }
//线程里持续执行 // 退出
void Cffmpeg_decode::run() void Cffmpeg_decode::stop() {
{ IsstopPlay = true;
if(!open_input_file()){ if (!pkt)
qDebug()<<"Please open video file first."; av_packet_free(&pkt);
emit sendConnectFail(1); if (!yuvFrame)
IsstopPlay = true; av_frame_free(&yuvFrame);
return; if (!rgbFrame)
} av_frame_free(&rgbFrame);
if (!videoCodecCtx)
while(av_read_frame(fmtCtx,pkt)>=0) avcodec_free_context(&videoCodecCtx);
{ if (!videoCodecCtx)
if(pkt->stream_index == videoStreamIndex){ avcodec_close(videoCodecCtx);
if(avcodec_send_packet(videoCodecCtx,pkt)>=0){ if (!fmtCtx)
int ret; avformat_close_input(&fmtCtx);
while((ret=avcodec_receive_frame(videoCodecCtx,yuvFrame))>=0)
{
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
return;
else if (ret < 0) {
fprintf(stderr, "Error during decoding\n");
exit(1);
}
sws_scale(img_ctx,
yuvFrame->data,yuvFrame->linesize,
0,videoCodecCtx->height,
rgbFrame->data,rgbFrame->linesize);
QImage img(out_buffer,
videoCodecCtx->width,videoCodecCtx->height,
QImage::Format_RGB32);
emit sendQImage(img);
//int m_timeframe= ((double)videoCodecCtx->framerate.den / videoCodecCtx->framerate.num)*1000;
QThread::msleep(28);
}
}
av_packet_unref(pkt);
}
if(IsstopPlay)
{
break;
}
}
qDebug()<<"All video play done";
} }

@ -1,69 +1,64 @@
#ifndef CFFMPEG_DECODE_H #ifndef CFFMPEG_DECODE_H
#define CFFMPEG_DECODE_H #define CFFMPEG_DECODE_H
#include <QDebug>
#include <QImage> #include <QImage>
#include <QWidget>
#include <QPaintEvent> #include <QPaintEvent>
#include <QThread>
#include <QPainter> #include <QPainter>
#include <QDebug> #include <QThread>
#include <QWidget>
extern "C"{ extern "C" {
#include "libavcodec/avcodec.h" #include "libavcodec/avcodec.h"
#include <libavutil/channel_layout.h> #include <libavutil/channel_layout.h>
#include <libavutil/common.h> #include <libavutil/common.h>
#include <libavutil/frame.h> #include <libavutil/frame.h>
#include <libavutil/samplefmt.h>
#include <libavutil/opt.h>
#include <libavutil/imgutils.h> #include <libavutil/imgutils.h>
#include <libavutil/parseutils.h>
#include <libavutil/mem.h> #include <libavutil/mem.h>
#include <libavutil/opt.h>
#include <libavutil/parseutils.h>
#include <libavutil/samplefmt.h>
#include <libswscale/swscale.h> #include <libswscale/swscale.h>
#include <libavformat/avformat.h> #include <libavformat/avformat.h>
} }
// class Cffmpeg_decode: public QThread
//class Cffmpeg_decode: public QThread class Cffmpeg_decode : public QObject {
class Cffmpeg_decode: public QObject
{
public: public:
explicit Cffmpeg_decode(); explicit Cffmpeg_decode();
~Cffmpeg_decode(); ~Cffmpeg_decode();
Q_OBJECT Q_OBJECT
public: public:
void setUrl(QString url);
void setUrl(QString url); bool open_input_file();
bool open_input_file(); bool IsstopPlay = false;
bool IsstopPlay= false; void stop();
public slots: public slots:
void run(); void run();
signals: signals:
void sendQImage(QImage); void sendQImage(QImage);
void sendConnectFail(int); void sendConnectFail(int);
private: private:
AVFormatContext *fmtCtx =NULL; AVFormatContext *fmtCtx = NULL;
const AVCodec *videoCodec =NULL; const AVCodec *videoCodec = NULL;
AVCodecContext *videoCodecCtx=NULL; AVCodecContext *videoCodecCtx = NULL;
AVPacket *pkt = NULL; AVPacket *pkt = NULL;
AVFrame *yuvFrame = NULL; AVFrame *yuvFrame = NULL;
AVFrame *rgbFrame = NULL; AVFrame *rgbFrame = NULL;
struct SwsContext *img_ctx=NULL;
unsigned char *out_buffer=nullptr;
int videoStreamIndex =-1; struct SwsContext *img_ctx = NULL;
int numBytes = -1;
unsigned char *out_buffer = nullptr;
int videoStreamIndex = -1;
int numBytes = -1;
QString _url; QString _url;
}; };
#endif // CFFMPEG_DECODE_H #endif // CFFMPEG_DECODE_H

@ -3,117 +3,99 @@
#include <QMessageBox> #include <QMessageBox>
ffmpegvideoDlg::ffmpegvideoDlg(QWidget *parent) ffmpegvideoDlg::ffmpegvideoDlg(QWidget *parent)
: QWidget(parent) : QWidget(parent), ui(new Ui::ffmpegvideoDlg) {
, ui(new Ui::ffmpegvideoDlg) ui->setupUi(this);
{ iniWindow();
ui->setupUi(this);
iniWindow();
} }
ffmpegvideoDlg::~ffmpegvideoDlg() ffmpegvideoDlg::~ffmpegvideoDlg() {
{ stop();
stop(); delete ui;
delete ui;
} }
void ffmpegvideoDlg::iniWindow() {
void ffmpegvideoDlg::iniWindow() QString VideoFilePath = QDir::currentPath() + "./Video";
{ QDir VideoDir(VideoFilePath);
QString VideoFilePath = QDir::currentPath()+"./Video"; if (!VideoDir.exists()) {
QDir VideoDir (VideoFilePath); VideoDir.mkdir(VideoFilePath);
if(!VideoDir.exists()) qDebug() << "文件夹创建成功";
{ }
VideoDir.mkdir(VideoFilePath);
qDebug()<<"文件夹创建成功";
}
}
void ffmpegvideoDlg::setUrl(QString url)
{
ffmpeg->setUrl(url);
} }
void ffmpegvideoDlg::setUrl(QString url) { ffmpeg->setUrl(url); }
void ffmpegvideoDlg::play() void ffmpegvideoDlg::play() {
{ if (!m_PlayStatus) {
if(!m_PlayStatus) m_PlayStatus = true;
{ ffmpeg = new Cffmpeg_decode;
m_PlayStatus = true; ffmpeg->IsstopPlay = false;
ffmpeg = new Cffmpeg_decode; ffmpeg->moveToThread(&workerThread);
ffmpeg->IsstopPlay = false; connect(&workerThread, &QThread::finished, ffmpeg,
ffmpeg->moveToThread(&workerThread); &QObject::deleteLater); // 线程发送结束标志
connect(&workerThread,&QThread::finished,ffmpeg,&QObject::deleteLater); //线程发送结束标志 connect(this, &ffmpegvideoDlg::operate, ffmpeg,
connect(this, &ffmpegvideoDlg::operate, ffmpeg, &Cffmpeg_decode::run); //线程开始处理数据 &Cffmpeg_decode::run); // 线程开始处理数据
connect(ffmpeg,SIGNAL(sendQImage(QImage)),this,SLOT(receiveQImage(QImage))); //发送解析的图片 connect(ffmpeg, SIGNAL(sendQImage(QImage)), this,
connect(ffmpeg,SIGNAL(sendConnectFail(int)),this,SLOT(showMessagBox(int))); //发送错误信息提示 SLOT(receiveQImage(QImage))); // 发送解析的图片
workerThread.start(); connect(ffmpeg, SIGNAL(sendConnectFail(int)), this,
emit this->operate(); //启用线程信号 SLOT(showMessagBox(int))); // 发送错误信息提示
} workerThread.start();
emit this->operate(); // 启用线程信号
}
} }
void ffmpegvideoDlg::stop() void ffmpegvideoDlg::stop() {
{ if (m_PlayStatus) {
if(m_PlayStatus) ffmpeg->stop();
{ m_PlayStatus = false;
m_PlayStatus = false; ffmpeg->IsstopPlay = true; // 线程结束标志
ffmpeg->IsstopPlay = true; //线程结束标志 workerThread.quit(); // 线程退出时自动delete线程里的类
workerThread.quit(); //线程退出时自动delete线程里的类 workerThread.wait();
workerThread.wait(); img.fill(Qt::black);
img.fill(Qt::black); }
}
} }
//绘图事件 // 绘图事件
void ffmpegvideoDlg::paintEvent(QPaintEvent *) void ffmpegvideoDlg::paintEvent(QPaintEvent *) {
{ QPainter painter(this);
QPainter painter(this); painter.drawImage(m_ax, m_ay, img);
painter.drawImage(m_ax,m_ay,img);
} }
//区域大小改变事件 // 区域大小改变事件
void ffmpegvideoDlg::resizeEvent(QResizeEvent *event) void ffmpegvideoDlg::resizeEvent(QResizeEvent *event) {
{ // 区域1920*1080自适应
//区域1920*1080自适应 double VideoAreaHeight = this->height();
double VideoAreaHeight = this->height(); double VideoAreaWidth = this->width();
double VideoAreaWidth = this->width(); // 高度值相对比较大
//高度值相对比较大 if (VideoAreaHeight * 16 > VideoAreaWidth * 9) {
if(VideoAreaHeight*16>VideoAreaWidth*9) m_setVideoAreaWidth = VideoAreaWidth;
{ m_setVideoAreaHeight = VideoAreaWidth * 9 / 16;
m_setVideoAreaWidth = VideoAreaWidth; m_ax = 0;
m_setVideoAreaHeight = VideoAreaWidth*9/16; m_ay = 0.5 * (VideoAreaHeight - m_setVideoAreaHeight);
m_ax = 0; }
m_ay = 0.5*(VideoAreaHeight-m_setVideoAreaHeight); // 宽度值相对比较大
} else {
//宽度值相对比较大 m_setVideoAreaHeight = VideoAreaHeight;
else m_setVideoAreaWidth = VideoAreaHeight * 16 / 9;
{ m_ax = 0.5 * (VideoAreaWidth - m_setVideoAreaWidth);
m_setVideoAreaHeight = VideoAreaHeight; m_ay = 0;
m_setVideoAreaWidth = VideoAreaHeight*16/9; }
m_ax = 0.5*(VideoAreaWidth-m_setVideoAreaWidth);
m_ay = 0;
}
} }
void ffmpegvideoDlg::receiveQImage(const QImage &rImg) void ffmpegvideoDlg::receiveQImage(const QImage &rImg) {
{
//img = rImg.scaled(this->size()); // img = rImg.scaled(this->size());
QSize imgsize(m_setVideoAreaWidth,m_setVideoAreaHeight); QSize imgsize(m_setVideoAreaWidth, m_setVideoAreaHeight);
img = rImg.scaled(imgsize); img = rImg.scaled(imgsize);
update(); update();
} }
//显示不同提示消息 // 显示不同提示消息
void ffmpegvideoDlg::showMessagBox(int type) void ffmpegvideoDlg::showMessagBox(int type) {
{ switch (type) {
switch (type) { case 1:
case 1: QMessageBox::information(NULL, tr("提示"), "获取视频失败", QMessageBox::Ok);
QMessageBox::information(NULL,tr("提示"),"获取视频失败",QMessageBox::Ok); break;
break; default:
default: break;
break; }
}
} }
bool ffmpegvideoDlg::Isplay(bool IsstopPlay) bool ffmpegvideoDlg::Isplay(bool IsstopPlay) {
{ return ffmpeg->IsstopPlay = IsstopPlay;
return ffmpeg->IsstopPlay = IsstopPlay;
} }

@ -1,27 +1,26 @@
#ifndef FFMPEGVIDEODLG_H #ifndef FFMPEGVIDEODLG_H
#define FFMPEGVIDEODLG_H #define FFMPEGVIDEODLG_H
#include "cffmpeg_decode.h"
#include <QDebug>
#include <QDir>
#include <QImage> #include <QImage>
#include <QWidget>
#include <QPaintEvent> #include <QPaintEvent>
#include <QThread>
#include <QPainter> #include <QPainter>
#include <QDebug> #include <QThread>
#include <QDir> #include <QWidget>
#include "cffmpeg_decode.h"
extern "C"{ extern "C" {
#include <libavcodec/avcodec.h> #include <libavcodec/avcodec.h>
#include <libavutil/channel_layout.h> #include <libavutil/channel_layout.h>
#include <libavutil/common.h> #include <libavutil/common.h>
#include <libavutil/frame.h> #include <libavutil/frame.h>
#include <libavutil/samplefmt.h>
#include <libavutil/opt.h>
#include <libavutil/imgutils.h> #include <libavutil/imgutils.h>
#include <libavutil/parseutils.h>
#include <libavutil/mem.h> #include <libavutil/mem.h>
#include <libavutil/opt.h>
#include <libavutil/parseutils.h>
#include <libavutil/samplefmt.h>
#include <libswscale/swscale.h> #include <libswscale/swscale.h>
@ -32,47 +31,44 @@ namespace Ui {
class ffmpegvideoDlg; class ffmpegvideoDlg;
} }
class ffmpegvideoDlg : public QWidget class ffmpegvideoDlg : public QWidget {
{ Q_OBJECT
Q_OBJECT
public: public:
explicit ffmpegvideoDlg(QWidget *parent = nullptr); explicit ffmpegvideoDlg(QWidget *parent = nullptr);
~ffmpegvideoDlg(); ~ffmpegvideoDlg();
private: private:
Ui::ffmpegvideoDlg *ui; Ui::ffmpegvideoDlg *ui;
public: public:
void iniWindow();
void setUrl(QString url);
void iniWindow(); void play();
void setUrl(QString url); void stop();
bool Isplay(bool IsstopPlay);
void play(); bool m_PlayStatus = false;
void stop();
bool Isplay(bool IsstopPlay);
bool m_PlayStatus =false;
double m_setVideoAreaWidth; double m_setVideoAreaWidth;
double m_setVideoAreaHeight; double m_setVideoAreaHeight;
double m_ax; double m_ax;
double m_ay; double m_ay;
protected: protected:
void paintEvent(QPaintEvent *); void paintEvent(QPaintEvent *);
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
private slots: private slots:
void receiveQImage(const QImage &rImg); void receiveQImage(const QImage &rImg);
void showMessagBox(int); void showMessagBox(int);
signals: signals:
void operate(); void operate();
private: private:
Cffmpeg_decode *ffmpeg; Cffmpeg_decode *ffmpeg;
QThread workerThread; QThread workerThread;
QImage img; QImage img;
}; };
#endif // FFMPEGVIDEODLG_H #endif // FFMPEGVIDEODLG_H

@ -1,431 +1,445 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "ui_mainwindow.h" #include "Src/HomePage/homepagesetingwidget.h"
#include "Src/WebPage/cwebengineview.h"
#include "Src/WebPage/CustomWebEnginePage.h" #include "Src/WebPage/CustomWebEnginePage.h"
#include "Src/WebPage/cwebengineview.h"
#include "global.h" #include "global.h"
#include <QToolBar> #include "ui_mainwindow.h"
#include <QFlags> #include <QAction>
#include <QFile> #include <QFile>
#include <QFlags>
#include <QToolBar>
#include <qpushbutton.h> #include <qpushbutton.h>
#include <QAction>
#include "Src/HomePage/homepagesetingwidget.h"
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent), ui(new Ui::MainWindow), mWeb(nullptr) {
, ui(new Ui::MainWindow) ui->setupUi(this);
, mWeb(nullptr)
{ initFile();
ui->setupUi(this); initWindow();
initButton();
initFile();
initWindow();
initButton();
// initMenuBar(); // initMenuBar();
initToolBar(); initToolBar();
initSignalSlot(); initSignalSlot();
process = new QProcess(this); process = new QProcess(this);
//apply the qss // apply the qss
QFile file(":/res/Qss/qss.qss"); QFile file(":/res/Qss/qss.qss");
if(file.open(QFile::ReadOnly)) if (file.open(QFile::ReadOnly)) {
{ // file.open(QFile::ReadOnly);
//file.open(QFile::ReadOnly); QString style = QLatin1String(file.readAll());
QString style = QLatin1String(file.readAll());
qApp->setStyleSheet(style);
qApp->setStyleSheet(style); // qDebug()<<style;
// qDebug()<<style; file.close();
file.close(); } else {
}
else qDebug() << "Open file fail " << Qt::endl;
{ }
qDebug()<<"Open file fail "<<Qt::endl; QString appDir = QCoreApplication::applicationDirPath() + "/app";
}
qDebug() << "Open file fail " << appDir;
QString appDir = QCoreApplication::applicationDirPath()+"/app";
qDebug()<<"Open file fail "<<appDir;
} }
MainWindow::~MainWindow() MainWindow::~MainWindow() {
{ delete m_SDFPDlg;
delete m_GDDCdlg; delete m_GDDCdlg;
delete m_HomePagedlg; delete m_HomePagedlg;
delete mWeb; delete mWeb;
delete process; delete process;
delete ui; delete ui;
if(m_ModelCameraDlg!=nullptr) delete m_ModelCameraDlg; if (m_ModelCameraDlg != nullptr)
delete m_ModelCameraDlg;
} }
/** /**
* @brief MainWindow::initFile .ini * @brief MainWindow::initFile .ini
*/ */
void MainWindow::initFile() void MainWindow::initFile() {
{ QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
QString urlFile = QCoreApplication::applicationDirPath()+"/config.ini"; QFile file(urlFile);
QFile file(urlFile); if (!file.open(QIODevice::ReadWrite)) {
if(!file.open(QIODevice::ReadWrite)) return;
{ }
return;
}
} }
void MainWindow::initWindow() void MainWindow::initWindow() {
{ setWindowIcon(QIcon(":/res/SDFP.png"));
setWindowIcon(QIcon(":/res/SDFP.png"));
// 设置主窗口背景颜色
//设置主窗口背景颜色 QPalette palette;
QPalette palette; palette.setColor(QPalette::Window, g_themeColor);
palette.setColor(QPalette::Window,g_themeColor); this->setPalette(palette);
this->setPalette(palette); this->setWindowTitle("载荷应用软件");
this->setWindowTitle("载荷应用软件"); this->resize(1450, 860);
this->resize(1450,860); // this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);//隐藏边框
//this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);//隐藏边框
m_SDFPDlg = new SDFPDlg(this);
m_SDFPDlg = new SDFPDlg(this); m_GDDCdlg = new GDDCdlg(this);
m_GDDCdlg = new GDDCdlg(this); m_HomePagedlg = new HomePageDlg(this);
m_HomePagedlg = new HomePageDlg(this); m_ModelCameraDlg = new ModelCameraDlg(this);
m_rescueLoadWidget = new RescueLoadWidget(this);
m_ModelCameraDlg = new ModelCameraDlg(this);
m_rescueLoadWidget = new RescueLoadWidget(this); // 使用信号槽函数获取配置文件中的IP
connect(m_HomePagedlg, &HomePageDlg::sendUrl, this,
//使用信号槽函数获取配置文件中的IP [](std::unordered_map<QString, QString> urlMap) {
connect(m_HomePagedlg, &HomePageDlg::sendUrl, this, [](std::unordered_map<QString,QString> urlMap){ qDebug() << "L链" << urlMap["L链"];
qDebug() << "L链" << urlMap["L链"]; qDebug() << "宽带自组网" << urlMap["宽带自组网"];
qDebug() << "宽带自组网" << urlMap["宽带自组网"]; qDebug() << "机载卫通" << urlMap["机载卫通"];
qDebug() << "机载卫通" << urlMap["机载卫通"]; });
});
// 使用类中的get方法获取配置文件中的IP
//使用类中的get方法获取配置文件中的IP m_HomePagedlg->getUrl(m_urlMap);
m_HomePagedlg->getUrl(m_urlMap);
qDebug() << "=============设备配置================";
qDebug() << "=============设备配置================"; qDebug() << "L链" << m_urlMap["L链"];
qDebug() << "L链" << m_urlMap["L链"]; qDebug() << "宽带自组网" << m_urlMap["宽带自组网"];
qDebug() << "宽带自组网" << m_urlMap["宽带自组网"]; qDebug() << "机载卫通" << m_urlMap["机载卫通"];
qDebug() << "机载卫通" << m_urlMap["机载卫通"];
mWeb = new CWebEngineView();
mWeb = new CWebEngineView(); mWeb->setPage(new CustomWebEnginePage());
mWeb->setPage(new CustomWebEnginePage()); mWeb->load(QUrl("http://192.168.150.1"));
mWeb->load(QUrl("http://192.168.150.1"));
lLinkWeb = new CWebEngineView();
lLinkWeb = new CWebEngineView(); lLinkWeb->setPage(new CustomWebEnginePage());
lLinkWeb->setPage(new CustomWebEnginePage()); lLinkWeb->load(QUrl(m_urlMap["L链"]));
lLinkWeb->load(QUrl(m_urlMap["L链"]));
adHocNetworkWeb = new CWebEngineView();
adHocNetworkWeb = new CWebEngineView(); adHocNetworkWeb->setPage(new CustomWebEnginePage());
adHocNetworkWeb->setPage(new CustomWebEnginePage()); adHocNetworkWeb->load(QUrl(m_urlMap["宽带自组网"]));
adHocNetworkWeb->load(QUrl(m_urlMap["宽带自组网"]));
satelliteCommWeb = new CWebEngineView();
satelliteCommWeb = new CWebEngineView(); satelliteCommWeb->setPage(new CustomWebEnginePage());
satelliteCommWeb->setPage(new CustomWebEnginePage()); satelliteCommWeb->load(QUrl(m_urlMap["机载卫通"]));
satelliteCommWeb->load(QUrl(m_urlMap["机载卫通"]));
// 接收主页面设置窗口的url数据传递并设置
//接收主页面设置窗口的url数据传递并设置 connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendOnlyUrl,
connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendOnlyUrl, this, [&](unsigned char urlIndex, QString url){ this, [&](unsigned char urlIndex, QString url) {
switch (urlIndex) { switch (urlIndex) {
case HomePageSetingWidget::L_Link: case HomePageSetingWidget::L_Link:
lLinkWeb->load(QUrl(url)); lLinkWeb->load(QUrl(url));
break; break;
case HomePageSetingWidget::Adhoc_Network: case HomePageSetingWidget::Adhoc_Network:
adHocNetworkWeb->load(QUrl(url)); adHocNetworkWeb->load(QUrl(url));
break; break;
case HomePageSetingWidget::Satelite_Comm: case HomePageSetingWidget::Satelite_Comm:
satelliteCommWeb->load(QUrl(url)); satelliteCommWeb->load(QUrl(url));
break; break;
default: default:
break; break;
} }
}); });
//接收主页面设置窗口的url数据传递并设置 一键设置 // 接收主页面设置窗口的url数据传递并设置 一键设置
connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendAllUrl, this, [&](std::unordered_map<QString,QString> urlMap){ connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendAllUrl, this,
lLinkWeb->load(QUrl(urlMap["L链"])); [&](std::unordered_map<QString, QString> urlMap) {
adHocNetworkWeb->load(QUrl(urlMap["宽带自组网"])); lLinkWeb->load(QUrl(urlMap["L链"]));
satelliteCommWeb->load(QUrl(urlMap["机载卫通"])); adHocNetworkWeb->load(QUrl(urlMap["宽带自组网"]));
}); satelliteCommWeb->load(QUrl(urlMap["机载卫通"]));
// 设置栈窗口,多页面共享同一窗口 });
ui->stackedWidget->addWidget(m_SDFPDlg); // 设置栈窗口,多页面共享同一窗口
ui->stackedWidget->addWidget(m_HomePagedlg); ui->stackedWidget->addWidget(m_SDFPDlg);
ui->stackedWidget->addWidget(m_GDDCdlg); ui->stackedWidget->addWidget(m_HomePagedlg);
ui->stackedWidget->addWidget(mWeb); ui->stackedWidget->addWidget(m_GDDCdlg);
ui->stackedWidget->addWidget(lLinkWeb); ui->stackedWidget->addWidget(mWeb);
ui->stackedWidget->addWidget(adHocNetworkWeb); ui->stackedWidget->addWidget(lLinkWeb);
ui->stackedWidget->addWidget(satelliteCommWeb); ui->stackedWidget->addWidget(adHocNetworkWeb);
ui->stackedWidget->addWidget(m_rescueLoadWidget); ui->stackedWidget->addWidget(satelliteCommWeb);
ui->stackedWidget->addWidget(m_ModelCameraDlg); ui->stackedWidget->addWidget(m_rescueLoadWidget);
// 初始栈窗口显示主页 ui->stackedWidget->addWidget(m_ModelCameraDlg);
ui->stackedWidget->setCurrentWidget(m_SDFPDlg); // 初始栈窗口显示主页
ui->stackedWidget->setCurrentWidget(m_SDFPDlg);
} }
void MainWindow::initButton() void MainWindow::initButton() {
{ int sizeX = 30;
int sizeX = 30; int sizeY = 30;
int sizeY = 30; int FixedWidth = 80;
int FixedWidth = 80; ui->toolButton->setIcon(QIcon(":/res/home.png"));
ui->toolButton->setIcon(QIcon(":/res/home.png")); ui->toolButton_2->setIcon(QIcon(":/res/GDDC.png"));
ui->toolButton_2->setIcon(QIcon(":/res/GDDC.png")); ui->toolButton_3->setIcon(QIcon(":/res/LChain.png"));
ui->toolButton_3->setIcon(QIcon(":/res/LChain.png")); ui->toolButton_4->setIcon(QIcon(":/res/wifi4G.png"));
ui->toolButton_4->setIcon(QIcon(":/res/wifi4G.png")); ui->toolButton_5->setIcon(QIcon(":/res/PDT.png"));
ui->toolButton_5->setIcon(QIcon(":/res/PDT.png")); ui->toolButton_6->setIcon(QIcon(":/res/Ku.png"));
ui->toolButton_6->setIcon(QIcon(":/res/Ku.png")); ui->toolButton_7->setIcon(QIcon(":/res/research.png"));
ui->toolButton_7->setIcon(QIcon(":/res/research.png")); ui->toolButton_8->setIcon(QIcon(":/res/3D.png"));
ui->toolButton_8->setIcon(QIcon(":/res/3D.png")); ui->toolButton_9->setIcon(QIcon(":/res/SDFP3.png"));
ui->toolButton_9->setIcon(QIcon(":/res/SDFP3.png")); ui->toolButton->setIconSize(QSize(sizeX, sizeY));
ui->toolButton->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_2->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_2->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_3->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_3->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_4->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_4->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_5->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_5->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_6->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_6->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_7->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_7->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_8->setIconSize(QSize(sizeX, sizeY));
ui->toolButton_8->setIconSize(QSize(sizeX,sizeY)); ui->toolButton_9->setIconSize(QSize(sizeX * 1.2, sizeY * 1.2));
ui->toolButton_9->setIconSize(QSize(sizeX*1.2,sizeY*1.2)); ui->toolButton->setText("主页");
ui->toolButton->setText("主页"); ui->toolButton_2->setText("光电吊舱");
ui->toolButton_2->setText("光电吊舱"); ui->toolButton_3->setText("L链");
ui->toolButton_3->setText("L链"); ui->toolButton_4->setText("自组网");
ui->toolButton_4->setText("自组网"); ui->toolButton_5->setText("PDT集群");
ui->toolButton_5->setText("PDT集群"); ui->toolButton_6->setText("机载卫通");
ui->toolButton_6->setText("机载卫通"); ui->toolButton_7->setText("搜救载荷");
ui->toolButton_7->setText("搜救载荷"); ui->toolButton_8->setText("三维建模");
ui->toolButton_8->setText("三维建模"); ui->toolButton_9->setText("时代飞鹏");
ui->toolButton_9->setText("时代飞鹏"); ui->toolButton->setFixedWidth(FixedWidth);
ui->toolButton->setFixedWidth(FixedWidth); ui->toolButton_2->setFixedWidth(FixedWidth);
ui->toolButton_2->setFixedWidth(FixedWidth); ui->toolButton_3->setFixedWidth(FixedWidth);
ui->toolButton_3->setFixedWidth(FixedWidth); ui->toolButton_4->setFixedWidth(FixedWidth);
ui->toolButton_4->setFixedWidth(FixedWidth); ui->toolButton_5->setFixedWidth(FixedWidth);
ui->toolButton_5->setFixedWidth(FixedWidth); ui->toolButton_6->setFixedWidth(FixedWidth);
ui->toolButton_6->setFixedWidth(FixedWidth); ui->toolButton_7->setFixedWidth(FixedWidth);
ui->toolButton_7->setFixedWidth(FixedWidth); ui->toolButton_8->setFixedWidth(FixedWidth);
ui->toolButton_8->setFixedWidth(FixedWidth); ui->toolButton_9->setFixedWidth(FixedWidth);
ui->toolButton_9->setFixedWidth(FixedWidth); ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_2->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_3->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_4->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_4->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_5->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_5->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_6->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_6->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_7->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_7->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_8->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_8->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton_9->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
ui->toolButton_9->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); ui->toolButton->setStyleSheet(g_ToolBtnStyle);
ui->toolButton->setStyleSheet(g_ToolBtnStyle); ui->toolButton_2->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_2->setStyleSheet(g_ToolBtnStyle); ui->toolButton_3->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_3->setStyleSheet(g_ToolBtnStyle); ui->toolButton_4->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_4->setStyleSheet(g_ToolBtnStyle); ui->toolButton_5->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_5->setStyleSheet(g_ToolBtnStyle); ui->toolButton_6->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_6->setStyleSheet(g_ToolBtnStyle); ui->toolButton_7->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_7->setStyleSheet(g_ToolBtnStyle); ui->toolButton_8->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_8->setStyleSheet(g_ToolBtnStyle); ui->toolButton_9->setStyleSheet(g_ToolBtnStyle);
ui->toolButton_9->setStyleSheet(g_ToolBtnStyle); // ui->pushButton->setStyleSheet(g_PushBtnStyle);
//ui->pushButton->setStyleSheet(g_PushBtnStyle);
} }
void MainWindow::initMenuBar() void MainWindow::initMenuBar() {
{ // QMenuBar *menuBar = new QMenuBar(this);
// QMenuBar *menuBar = new QMenuBar(this); // this->setMenuBar(menuBar);
// this->setMenuBar(menuBar);
// QMenu *menu1 = new QMenu("菜单1",this);
// QMenu *menu1 = new QMenu("菜单1",this); // QMenu *menu2 = new QMenu("菜单2",this);
// QMenu *menu2 = new QMenu("菜单2",this); // QMenu *menu3 = new QMenu("菜单3",this);
// QMenu *menu3 = new QMenu("菜单3",this); // QMenu *menu4 = new QMenu("菜单4",this);
// QMenu *menu4 = new QMenu("菜单4",this); // QMenu *menu5 = new QMenu("菜单5",this);
// QMenu *menu5 = new QMenu("菜单5",this); // QMenu *menu6 = new QMenu("菜单6",this);
// QMenu *menu6 = new QMenu("菜单6",this); // QMenu *menu7 = new QMenu("菜单7",this);
// QMenu *menu7 = new QMenu("菜单7",this);
// menuBar->addMenu(menu1);
// menuBar->addMenu(menu1); // menuBar->addMenu(menu2);
// menuBar->addMenu(menu2); // menuBar->addMenu(menu3);
// menuBar->addMenu(menu3); // menuBar->addMenu(menu4);
// menuBar->addMenu(menu4); // menuBar->addMenu(menu5);
// menuBar->addMenu(menu5); // menuBar->addMenu(menu6);
// menuBar->addMenu(menu6); // menuBar->addMenu(menu7);
// menuBar->addMenu(menu7); // menuBar->setStyleSheet("QMenuBar{color:rgb(255,255,255);background:rgb(0,0,0);}");//设置颜色
// menuBar->setStyleSheet("QMenuBar{color:rgb(255,255,255);background:rgb(0,0,0);}");//设置颜色
} }
void MainWindow::initToolBar() void MainWindow::initToolBar() {
{ // QToolBar *toolBar = new QToolBar("toolBar",this);
// QToolBar *toolBar = new QToolBar("toolBar",this); // this->addToolBar(Qt::LeftToolBarArea,toolBar);
// this->addToolBar(Qt::LeftToolBarArea,toolBar); // toolBar->setFloatable(false);//设置可浮动
// toolBar->setFloatable(false);//设置可浮动 // toolBar->setMovable(true);//可移动
// toolBar->setMovable(true);//可移动
// //QAction *actionToolBar = new
// //QAction *actionToolBar = new QAction(/*QIcon("res/主页.png"),*/"主页",this); // QAction(/*QIcon("res/主页.png"),*/"主页",this); QAction *actionToolBar =
// QAction *actionToolBar = new QAction(QIcon(":/res/SDFP.png"),"主 页",this); // new QAction(QIcon(":/res/SDFP.png"),"主 页",this); QAction *actionToolBar2
// QAction *actionToolBar2 = new QAction(QIcon(":/res/GDDC.png"),"光电吊舱",this); // = new QAction(QIcon(":/res/GDDC.png"),"光电吊舱",this); QAction
// QAction *actionToolBar3 = new QAction(QIcon(":/res/LChain.png"),"L 链",this); // *actionToolBar3 = new QAction(QIcon(":/res/LChain.png"),"L 链",this);
// QAction *actionToolBar4 = new QAction(QIcon(":/res/adHoc.png"),"自组网 ",this); // QAction *actionToolBar4 = new QAction(QIcon(":/res/adHoc.png"),"自组网
// QAction *actionToolBar5 = new QAction(QIcon(":/res/PDTColony.png"),"PDT集群",this); // ",this); QAction *actionToolBar5 = new
// QAction *actionToolBar6 = new QAction(QIcon(":/res/Kusatellite.png"),"Ku卫通",this); // QAction(QIcon(":/res/PDTColony.png"),"PDT集群",this); QAction
// QAction *actionToolBar7 = new QAction(QIcon(":/res/SearchPayload.png"),"搜集载荷",this); // *actionToolBar6 = new
// QAction *actionToolBar8 = new QAction(QIcon(":/res/3DModeling.png"),"三维建模",this); // QAction(QIcon(":/res/Kusatellite.png"),"Ku卫通",this); QAction
// *actionToolBar7 = new
// QAction(QIcon(":/res/SearchPayload.png"),"搜集载荷",this); QAction
// toolBar->addAction(actionToolBar); // *actionToolBar8 = new
// toolBar->addAction(actionToolBar2); // QAction(QIcon(":/res/3DModeling.png"),"三维建模",this);
// toolBar->addAction(actionToolBar3);
// toolBar->addAction(actionToolBar4); // toolBar->addAction(actionToolBar);
// toolBar->addAction(actionToolBar5); // toolBar->addAction(actionToolBar2);
// toolBar->addAction(actionToolBar6); // toolBar->addAction(actionToolBar3);
// toolBar->addAction(actionToolBar7); // toolBar->addAction(actionToolBar4);
// toolBar->addAction(actionToolBar8); // toolBar->addAction(actionToolBar5);
// toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea|Qt::TopToolBarArea); // toolBar->addAction(actionToolBar6);
// toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // toolBar->addAction(actionToolBar7);
// toolBar->setStyleSheet("color:white;slection-background-color:green");//设置颜色 // toolBar->addAction(actionToolBar8);
// ui->toolBar->addAction(ui->toolbar_action1); // toolBar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea|Qt::TopToolBarArea);
// //ui->toolBar->addSeparator(); // toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
// ui->toolBar->addAction(ui->toolbar_action2); // toolBar->setStyleSheet("color:white;slection-background-color:green");//设置颜色
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action1);
// ui->toolBar->addAction(ui->toolbar_action3); // //ui->toolBar->addSeparator();
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action2);
// ui->toolBar->addAction(ui->toolbar_action4); // //ui->toolBar->addSeparator();
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action3);
// ui->toolBar->addAction(ui->toolbar_action5); // //ui->toolBar->addSeparator();
// // ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action4);
// ui->toolBar->addAction(ui->toolbar_action6); // //ui->toolBar->addSeparator();
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action5);
// ui->toolBar->addAction(ui->toolbar_action7); // // ui->toolBar->addSeparator();
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action6);
// ui->toolBar->addAction(ui->toolbar_action8); // //ui->toolBar->addSeparator();
// //ui->toolBar->addSeparator(); // ui->toolBar->addAction(ui->toolbar_action7);
// ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); // //ui->toolBar->addSeparator();
// ui->toolBar->setStyleSheet("QToolBar:{color:white;}" // ui->toolBar->addAction(ui->toolbar_action8);
// "QToolBar:hover{background-color:rgb(100,100,100);color:rgb(200,200,200);}" // //ui->toolBar->addSeparator();
// "QToolBar:pressed{background-color:blue;}"); // ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
// ui->toolBar->setStyleSheet("QToolBar:{color:white;}"
/*"QAction:hover{background-color:white; color: green;}"*/ // "QToolBar:hover{background-color:rgb(100,100,100);color:rgb(200,200,200);}"
/*"QAction:pressed{background-color:rgb(100, 100, 100);}");*/ // "QToolBar:pressed{background-color:blue;}");
/*"QAction:hover{background-color:white; color: green;}"*/
/*"QAction:pressed{background-color:rgb(100, 100, 100);}");*/
} }
//初始化信号与槽 // 初始化信号与槽
void MainWindow::initSignalSlot() void MainWindow::initSignalSlot() {
{ connect(ui->toolButton, SIGNAL(clicked()), this, SLOT(toolButton_clicked()));
connect(ui->toolButton,SIGNAL(clicked()),this,SLOT(toolButton_clicked())); connect(ui->toolButton_2, SIGNAL(clicked()), this,
connect(ui->toolButton_2,SIGNAL(clicked()),this,SLOT(toolButton_2_clicked())); SLOT(toolButton_2_clicked()));
connect(ui->toolButton_3,SIGNAL(clicked()),this,SLOT(toolButton_3_clicked())); connect(ui->toolButton_3, SIGNAL(clicked()), this,
connect(ui->toolButton_4,SIGNAL(clicked()),this,SLOT(toolButton_4_clicked())); SLOT(toolButton_3_clicked()));
connect(ui->toolButton_5,SIGNAL(clicked()),this,SLOT(toolButton_5_clicked())); connect(ui->toolButton_4, SIGNAL(clicked()), this,
connect(ui->toolButton_6,SIGNAL(clicked()),this,SLOT(toolButton_6_clicked())); SLOT(toolButton_4_clicked()));
connect(ui->toolButton_7,SIGNAL(clicked()),this,SLOT(toolButton_7_clicked())); connect(ui->toolButton_5, SIGNAL(clicked()), this,
connect(ui->toolButton_8,SIGNAL(clicked()),this,SLOT(toolButton_8_clicked())); SLOT(toolButton_5_clicked()));
connect(ui->toolButton_9,SIGNAL(clicked()),this,SLOT(toolButton_9_clicked())); connect(ui->toolButton_6, SIGNAL(clicked()), this,
SLOT(toolButton_6_clicked()));
connect(ui->toolButton_7, SIGNAL(clicked()), this,
SLOT(toolButton_7_clicked()));
connect(ui->toolButton_8, SIGNAL(clicked()), this,
SLOT(toolButton_8_clicked()));
connect(ui->toolButton_9, SIGNAL(clicked()), this,
SLOT(toolButton_9_clicked()));
connect(m_HomePagedlg->m_deviceStateDlg, &deviceStateDlg::switchToDevicePage,
this, [&](int id) {
switch (id) {
case 0:
toolButton_2_clicked(); // 光电吊舱
break;
case 1:
toolButton_3_clicked(); // L链
break;
case 2:
toolButton_4_clicked(); // 自组网
break;
case 3:
toolButton_5_clicked(); // PDT集群
break;
case 4:
toolButton_6_clicked(); // Ku卫通
break;
case 5:
toolButton_7_clicked(); // 搜救载荷
break;
case 6:
toolButton_8_clicked(); // 三维建模
break;
default:
break;
}
});
} }
//主页 // 主页
void MainWindow::toolButton_clicked() void MainWindow::toolButton_clicked() {
{ changeBtnColor(1);
changeBtnColor(1); // m_HomePagedlg->move(130,80);
//m_HomePagedlg->move(130,80); ui->stackedWidget->setCurrentWidget(m_HomePagedlg);
ui->stackedWidget->setCurrentWidget(m_HomePagedlg); process->kill();
process->kill();
} }
//光电吊舱 // 光电吊舱
void MainWindow::toolButton_2_clicked() void MainWindow::toolButton_2_clicked() {
{ changeBtnColor(2);
changeBtnColor(2); // m_GDDCdlg->move(130,80);
//m_GDDCdlg->move(130,80); // m_GDDCdlg->show(); //显示窗口
//m_GDDCdlg->show(); //显示窗口
ui->stackedWidget->setCurrentWidget(m_GDDCdlg);
ui->stackedWidget->setCurrentWidget(m_GDDCdlg);
} }
//L链 // L链
void MainWindow::toolButton_3_clicked() void MainWindow::toolButton_3_clicked() {
{ changeBtnColor(3);
changeBtnColor(3); // mWeb->load(QUrl("http://192.168.1.10"));
// mWeb->load(QUrl("http://192.168.1.10")); ui->stackedWidget->setCurrentWidget(lLinkWeb);
ui->stackedWidget->setCurrentWidget(lLinkWeb);
} }
//自组网 // 自组网
void MainWindow::toolButton_4_clicked() void MainWindow::toolButton_4_clicked() {
{ changeBtnColor(4);
changeBtnColor(4);
// mWeb->load(QUrl("http://192.168.1.10")); // mWeb->load(QUrl("http://192.168.1.10"));
// mWeb->show(); // mWeb->show();
ui->stackedWidget->setCurrentWidget(adHocNetworkWeb); ui->stackedWidget->setCurrentWidget(adHocNetworkWeb);
//process->kill(); // process->kill();
} }
//PDT集群 // PDT集群
void MainWindow::toolButton_5_clicked() void MainWindow::toolButton_5_clicked() {
{ changeBtnColor(5);
changeBtnColor(5); // mWeb->load(QUrl("http://192.168.150.1"));
// mWeb->load(QUrl("http://192.168.150.1")); // mWeb->show();
// mWeb->show(); ui->stackedWidget->setCurrentWidget(mWeb);
ui->stackedWidget->setCurrentWidget(mWeb);
} }
//Ku卫通 // Ku卫通
void MainWindow::toolButton_6_clicked() void MainWindow::toolButton_6_clicked() {
{ changeBtnColor(6);
changeBtnColor(6); // mWeb->load(QUrl("http://192.168.0.2"));
// mWeb->load(QUrl("http://192.168.0.2")); // mWeb->show();
// mWeb->show(); ui->stackedWidget->setCurrentWidget(satelliteCommWeb);
ui->stackedWidget->setCurrentWidget(satelliteCommWeb);
} }
//搜救载荷 // 搜救载荷
void MainWindow::toolButton_7_clicked() void MainWindow::toolButton_7_clicked() {
{ changeBtnColor(7);
changeBtnColor(7);
ui->stackedWidget->setCurrentWidget(m_rescueLoadWidget); ui->stackedWidget->setCurrentWidget(m_rescueLoadWidget);
} }
//三维建模 // 三维建模
void MainWindow::toolButton_8_clicked() void MainWindow::toolButton_8_clicked() {
{ changeBtnColor(8);
changeBtnColor(8); ui->stackedWidget->setCurrentWidget(m_ModelCameraDlg);
ui->stackedWidget->setCurrentWidget(m_ModelCameraDlg);
//ui->stackedWidget->setCurrentWidget(mWeb); // ui->stackedWidget->setCurrentWidget(mWeb);
//process->setWorkingDirectory("D:/QTdemo/playerApp/app"); // 设置工作目录 // process->setWorkingDirectory("D:/QTdemo/playerApp/app"); // 设置工作目录
//process->start("D:/QTdemo/playerApp/app/XCOM V2.0.exe"); // 启动exe并传递参数 // process->start("D:/QTdemo/playerApp/app/XCOM V2.0.exe"); //
// 启动exe并传递参数
//process->setWorkingDirectory("D:/Software/TCPUDPDbg"); // 设置工作目录 // process->setWorkingDirectory("D:/Software/TCPUDPDbg"); // 设置工作目录
//process->start("D:/Software/TCPUDPDbg/TCPUDPDbg.exe"); // 启动exe并传递参数 // process->start("D:/Software/TCPUDPDbg/TCPUDPDbg.exe"); // 启动exe并传递参数
} }
//时代飞鹏 // 时代飞鹏
void MainWindow::toolButton_9_clicked() void MainWindow::toolButton_9_clicked() {
{ changeBtnColor(9);
changeBtnColor(9); ui->stackedWidget->setCurrentWidget(m_SDFPDlg);
ui->stackedWidget->setCurrentWidget(m_SDFPDlg);
} }
//更新主界面按钮颜色 // 更新主界面按钮颜色
void MainWindow::changeBtnColor(int num) void MainWindow::changeBtnColor(int num) {
{
initButton();
initButton(); switch (num) {
switch (num) case 1:
{ ui->toolButton->setStyleSheet(g_ToolBtnSelStyle);
case 1: break;
ui->toolButton->setStyleSheet(g_ToolBtnSelStyle); case 2:
break; ui->toolButton_2->setStyleSheet(g_ToolBtnSelStyle);
case 2: break;
ui->toolButton_2->setStyleSheet(g_ToolBtnSelStyle); case 3:
break; ui->toolButton_3->setStyleSheet(g_ToolBtnSelStyle);
case 3: break;
ui->toolButton_3->setStyleSheet(g_ToolBtnSelStyle); case 4:
break; ui->toolButton_4->setStyleSheet(g_ToolBtnSelStyle);
case 4: break;
ui->toolButton_4->setStyleSheet(g_ToolBtnSelStyle); case 5:
break; ui->toolButton_5->setStyleSheet(g_ToolBtnSelStyle);
case 5: break;
ui->toolButton_5->setStyleSheet(g_ToolBtnSelStyle); case 6:
break; ui->toolButton_6->setStyleSheet(g_ToolBtnSelStyle);
case 6: break;
ui->toolButton_6->setStyleSheet(g_ToolBtnSelStyle); case 7:
break; ui->toolButton_7->setStyleSheet(g_ToolBtnSelStyle);
case 7: break;
ui->toolButton_7->setStyleSheet(g_ToolBtnSelStyle); case 8:
break; ui->toolButton_8->setStyleSheet(g_ToolBtnSelStyle);
case 8: break;
ui->toolButton_8->setStyleSheet(g_ToolBtnSelStyle); case 9:
break; ui->toolButton_9->setStyleSheet(g_ToolBtnSelStyle);
case 9: break;
ui->toolButton_9->setStyleSheet(g_ToolBtnSelStyle); }
break;
}
} }

@ -20,5 +20,15 @@
<file>res/SDFP2.png</file> <file>res/SDFP2.png</file>
<file>res/SDFP3.png</file> <file>res/SDFP3.png</file>
<file>res/settings2.png</file> <file>res/settings2.png</file>
<file>res/lamp/black.png</file>
<file>res/lamp/blue.png</file>
<file>res/lamp/green.png</file>
<file>res/lamp/grey.png</file>
<file>res/lamp/grey1.png</file>
<file>res/lamp/grey3.png</file>
<file>res/lamp/orange.png</file>
<file>res/lamp/red.png</file>
<file>res/lamp/white.png</file>
<file>res/lamp/yellow.png</file>
</qresource> </qresource>
</RCC> </RCC>

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1113</width> <width>829</width>
<height>416</height> <height>497</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Loading…
Cancel
Save