You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PayloadAPP/mainwindow.cpp

412 lines
14 KiB
C++

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