317 lines
9.4 KiB
C++
317 lines
9.4 KiB
C++
#ifndef MAINWINDOW_H
|
|
#define MAINWINDOW_H
|
|
|
|
#include <QMainWindow>
|
|
#include <QApplication>
|
|
#include <QDir>
|
|
#include <QTimer>
|
|
#include <QVBoxLayout>
|
|
#include <QScopedPointer>
|
|
#include <QJsonObject>
|
|
#include <QProcess>
|
|
#include <iostream>
|
|
#include <qevent.h>
|
|
#include <qpushbutton.h>
|
|
#include <unordered_map>
|
|
#include <uiModule/components/toolBarButton.h>
|
|
#include <QStackedWidget>
|
|
#include <LoginWindow.h>
|
|
#include <QPropertyAnimation>
|
|
#include <loadingWidget.h>
|
|
#include <uiModule/uiModule_imageDoubleCheckQdialog.h>
|
|
|
|
#include <pages/displayPageWidget.h>
|
|
#include <pages/configSettingWidget.h>
|
|
#include <pages/logPageWidget.h>
|
|
#include <pages/sqlControlWidget.h>
|
|
#include <pages/manualDetWidget.h>
|
|
#include <front/pages/historyWidget.h>
|
|
#include <appConfig/appConfig.h>
|
|
#include <iostream>
|
|
#include <algorithm>
|
|
#include <uiModule_backContinueDetDialog.h>
|
|
#include <uiModule_productDetDoubleCheck.h>
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
namespace Ui { class MainWindow; }
|
|
QT_END_NAMESPACE
|
|
class fbBridge;
|
|
class appConfig;
|
|
|
|
class MainWindow : public QMainWindow
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
MainWindow(QWidget *parent = nullptr);
|
|
~MainWindow();
|
|
//主要控件
|
|
std::vector<toolBarButton*>pageBtns;
|
|
QStackedWidget stackedWidgets;//一共三层,加载界面,登录界面,主要界面
|
|
QStackedWidget pageWidgets;//主要界面中的页面
|
|
loginWindow _loginWindow;//登录界面
|
|
loadingWidget _loadingWidget;//加载 等待界面
|
|
|
|
//页面
|
|
displayWidget* _displayWidget;
|
|
configSettingWidget* _configSettingWidget;
|
|
logWidget* _logWidget;
|
|
sqlControlWidget* _sqlControlWidget;
|
|
manualDetWidget* _manualDetWidget;
|
|
historyWidget* _historyWidget;
|
|
//人工复判窗口
|
|
imageDoubleCheckQdialog* _imageDoubleCheckQdialog = new imageDoubleCheckQdialog();
|
|
backContinueDetDialog* _backContinueDetDialog = new backContinueDetDialog();
|
|
productDetDoubleCheck* _productDetDoubleCheck = new productDetDoubleCheck();
|
|
private:
|
|
Ui::MainWindow* ui;
|
|
fbBridge* fbBridgePtr;
|
|
//动画效果
|
|
QGraphicsBlurEffect* blurEffect;
|
|
QPropertyAnimation* blurEffectAnimation;
|
|
|
|
QPushButton* maximizeRestoreButton;
|
|
|
|
QVBoxLayout* mainLayout;
|
|
QHBoxLayout* mainLayout2;
|
|
QWidget* mainWidget;
|
|
QWidget* mainWidget2;
|
|
|
|
bool isLogin = false;
|
|
bool backEndInit = false;
|
|
|
|
void topBarInit();
|
|
void leftBarInit();
|
|
|
|
//窗口移动
|
|
#pragma region 窗口移动变量
|
|
bool isMoving = false;
|
|
QPoint startPos;
|
|
QRect startFrameGeometry;
|
|
QTime lastWindowMoveTime;
|
|
int freshDelay = 1000 / windowMoveFreshRate;
|
|
bool setNormalAndMove = false;//判断是否从最大化开始移动
|
|
#pragma endregion
|
|
//窗口缩放
|
|
#pragma region 窗口缩放变量
|
|
enum toggleMaximizeEnum
|
|
{
|
|
reverse,
|
|
normal,
|
|
max
|
|
};
|
|
#pragma endregion
|
|
|
|
|
|
public slots:
|
|
void switchToManulMode()
|
|
{
|
|
_displayWidget->setDisabled(true);
|
|
loading(false);
|
|
}
|
|
void minimizeWindow()
|
|
{
|
|
showMinimized();
|
|
}
|
|
void switchStackWidget(int index)
|
|
{
|
|
for (int index2 = 0; index2 < pageBtns.size(); index2++)
|
|
{
|
|
if (index2 != index)
|
|
pageBtns[index2]->toDefault();
|
|
}
|
|
pageBtns[index]->pressed();
|
|
pageWidgets.setCurrentIndex(index);
|
|
qDebug() << "switch Page to Index:" << index;
|
|
}
|
|
void toggleMaximize(toggleMaximizeEnum toggleMaximizeEnumIn = reverse)
|
|
{
|
|
switch (toggleMaximizeEnumIn)
|
|
{
|
|
case reverse:
|
|
if (isMaximized()) {
|
|
showNormal();
|
|
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen.png"));
|
|
}
|
|
else {
|
|
showMaximized();
|
|
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen-exit.png"));
|
|
}
|
|
break;
|
|
case normal:
|
|
showNormal();
|
|
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen.png"));
|
|
break;
|
|
case max:
|
|
showMaximized();
|
|
maximizeRestoreButton->setIcon(QPixmap(":/topBar/icon/fullscreen-exit.png"));
|
|
break;
|
|
}
|
|
|
|
_displayWidget->windowChanged();
|
|
}
|
|
void switchstackedWidgets(int index)
|
|
{
|
|
stackedWidgets.setCurrentIndex(index);
|
|
}
|
|
void login(bool input)
|
|
{
|
|
if (input == true)
|
|
{
|
|
#if disableBackEndCheck == 0
|
|
if (backEndInit == false)
|
|
{
|
|
isLogin = true;
|
|
loading(true);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
blurEffectAnimation->setStartValue(0);
|
|
blurEffectAnimation->setEndValue(20);
|
|
blurEffectAnimation->start();
|
|
stackedWidgets.setCurrentIndex(2);
|
|
blurEffectAnimation->setStartValue(20);
|
|
blurEffectAnimation->setEndValue(0);
|
|
blurEffectAnimation->start();
|
|
}
|
|
}
|
|
else if (input == false)
|
|
{
|
|
stackedWidgets.setCurrentIndex(0);
|
|
loading(false);
|
|
}
|
|
}
|
|
void loading(bool input)
|
|
{
|
|
if (input == true)
|
|
{
|
|
|
|
blurEffectAnimation->setStartValue(0);
|
|
blurEffectAnimation->setEndValue(20);
|
|
blurEffectAnimation->start();
|
|
stackedWidgets.setCurrentIndex(1);
|
|
blurEffectAnimation->setStartValue(0);
|
|
blurEffectAnimation->setEndValue(0);
|
|
blurEffectAnimation->start();
|
|
|
|
}
|
|
else if (input == false)
|
|
{
|
|
blurEffectAnimation->setStartValue(0);
|
|
blurEffectAnimation->setEndValue(0);
|
|
blurEffectAnimation->start();
|
|
_loadingWidget.stop();
|
|
stackedWidgets.setCurrentIndex(2);
|
|
blurEffectAnimation->setStartValue(20);
|
|
blurEffectAnimation->setEndValue(0);
|
|
blurEffectAnimation->start();
|
|
}
|
|
}
|
|
void recvPixmapImageWidget(showImgPack* pack)
|
|
{
|
|
_displayWidget->_ImageWidgetManager.showImg(pack->img, pack->type, pack->index);
|
|
delete pack;
|
|
}
|
|
void recvInitFinished(int input)
|
|
{
|
|
switch (input)
|
|
{
|
|
case initStatus::InitOK:
|
|
backEndInit = true;
|
|
if (isLogin == true)
|
|
loading(false);
|
|
break;
|
|
default:
|
|
_loadingWidget.setError();
|
|
backEndInit = false;
|
|
}
|
|
}
|
|
void recvInitString(QString strIn)
|
|
{
|
|
if (_loadingWidget.isRunning != false)
|
|
{
|
|
_loadingWidget.initLog->append(strIn);
|
|
}
|
|
}
|
|
void addDetHistoryData(bool isOK, historyPack _historyPack)
|
|
{
|
|
_displayWidget->historyImgs->addData(isOK, _historyPack);
|
|
}
|
|
void addDashBoardData(int index, bool value)//增加一个OK/NG数据到dashboard
|
|
{
|
|
if (_displayWidget->_summaryDataManager->dashBoardWidgets.size() - 1 < index)
|
|
qDebug() << __LINE__ << "index out of Size";
|
|
if(value==true)
|
|
_displayWidget->_summaryDataManager->dashBoardWidgets[index]->addOk();
|
|
else
|
|
_displayWidget->_summaryDataManager->dashBoardWidgets[index]->addNG();
|
|
}
|
|
void addCtData(int index, int value)
|
|
{
|
|
switch (index)
|
|
{
|
|
case 0:
|
|
_displayWidget->_summaryDataManager->totalCtBar->addData(value);
|
|
break;
|
|
case 1:
|
|
_displayWidget->_summaryDataManager->halconCtBar->addData(value);
|
|
break;
|
|
case 2:
|
|
_displayWidget->_summaryDataManager->aiCtBar->addData(value);
|
|
break;
|
|
}
|
|
}
|
|
//void resetDashBoard();//reset dashBoard
|
|
void uiModuleLocationMapSetProductSignStatus(int pos, int status)
|
|
{
|
|
_displayWidget->_uiModuleLocationMap->setProductSignStatus(pos, status);
|
|
}
|
|
//void addShowPerformanceWidgetData(int index, int timeCost);
|
|
//void resetShowPerformanceWidget();
|
|
signals:
|
|
void reInitSignal();
|
|
protected:
|
|
void mouseDoubleClickEvent(QMouseEvent* event) override
|
|
{
|
|
if (event->pos().y() > 35)
|
|
return
|
|
toggleMaximize(reverse);
|
|
QMainWindow::mouseDoubleClickEvent(event);
|
|
}
|
|
void mousePressEvent(QMouseEvent* event) override {
|
|
if (event->pos().y() > 35)
|
|
return;
|
|
if (event->button() == Qt::LeftButton) {
|
|
startPos = event->globalPos();
|
|
startFrameGeometry = frameGeometry();
|
|
isMoving = true;
|
|
lastWindowMoveTime.start(); // 按下时开始计时
|
|
}
|
|
QMainWindow::mousePressEvent(event);
|
|
}
|
|
void mouseMoveEvent(QMouseEvent* event) override {
|
|
if (event->buttons() == Qt::LeftButton && isMoving) {
|
|
QPoint pos = event->globalPos();
|
|
if (getMax(getAbs(pos.x()- startPos.x()), getAbs(pos.y() - startPos.y()))>10)
|
|
if(lastWindowMoveTime.elapsed()> freshDelay)//每秒刷新100次
|
|
{
|
|
lastWindowMoveTime.restart();
|
|
move(startFrameGeometry.topLeft() + (event->globalPos() - startPos));
|
|
}
|
|
}
|
|
QMainWindow::mouseMoveEvent(event);
|
|
}
|
|
void mouseReleaseEvent(QMouseEvent* event) override {
|
|
if (event->button() == Qt::LeftButton) {
|
|
isMoving = false;
|
|
}
|
|
QMainWindow::mouseReleaseEvent(event);
|
|
}
|
|
void resizeEvent(QResizeEvent* event) override {
|
|
QMainWindow::resizeEvent(event);
|
|
}
|
|
};
|
|
#endif // MAINWINDOW_H
|