From 16e695954da9ee664283c207820a683509d8a72a Mon Sep 17 00:00:00 2001
From: lzhyasuo <610010854@qq.com>
Date: Fri, 6 May 2022 15:34:00 +0800
Subject: [PATCH] 2022_5_6
---
QT_IEK.pro | 89 ++
QT_IEK.pro.user | 328 +++++
Src/Chart/Chart.cpp | 147 +++
Src/Chart/Chart.h | 58 +
Src/Chart/ChartBar.cpp | 530 +++++++++
Src/Chart/ChartBar.h | 68 ++
Src/Chart/ChartBaseSeries.cpp | 500 ++++++++
Src/Chart/ChartBaseSeries.h | 92 ++
Src/Chart/ChartCurve.cpp | 147 +++
Src/Chart/ChartCurve.h | 45 +
Src/Chart/ChartLine.cpp | 255 ++++
Src/Chart/ChartLine.h | 50 +
Src/Chart/ChartPie.cpp | 86 ++
Src/Chart/ChartPie.h | 25 +
Src/Control/ControlDashBoard.cpp | 29 +
Src/Control/ControlDashBoard.h | 19 +
Src/Control/ControlRoundProBar.cpp | 114 ++
Src/Control/ControlRoundProBar.h | 33 +
Src/Gui/BaseWidget.cpp | 82 ++
Src/Gui/BaseWidget.h | 41 +
Src/Gui/DockWidget.cpp | 153 +++
Src/Gui/DockWidget.h | 59 +
Src/Gui/MainWindow.cpp | 280 +++++
Src/Gui/MainWindow.h | 28 +
Src/Gui/ModuleWidget.cpp | 1048 ++++++++++++++++
Src/Gui/ModuleWidget.h | 51 +
Src/Gui/OpenCVGLWidget.cpp | 104 ++
Src/Gui/OpenCVGLWidget.h | 31 +
Src/Gui/SmallWindow.cpp | 1187 +++++++++++++++++++
Src/Gui/SmallWindow.h | 24 +
Src/Gui/TypeWindow.cpp | 351 ++++++
Src/Gui/TypeWindow.h | 33 +
Src/Model/LoadDistributionModelDelegate.cpp | 275 +++++
Src/Model/LoadDistributionModelDelegate.h | 137 +++
Src/Model/LoadDistributionTableView.cpp | 184 +++
Src/Model/LoadDistributionTableView.h | 39 +
Src/Model/MoldProModelDelegate.cpp | 312 +++++
Src/Model/MoldProModelDelegate.h | 137 +++
Src/Model/MoldProTableView.cpp | 184 +++
Src/Model/MoldProTableView.h | 39 +
Src/Model/PartsInventoryModelDelegate.cpp | 278 +++++
Src/Model/PartsInventoryModelDelegate.h | 157 +++
Src/Model/PartsInventoryTableView.cpp | 76 ++
Src/Model/PartsInventoryTableView.h | 35 +
Src/Pub/PubCss.cpp | 62 +
Src/Pub/PubCss.h | 29 +
Src/Pub/PubFunction.cpp | 14 +
Src/Pub/PubFunction.h | 25 +
Src/Task/OpenCVVideo.cpp | 63 +
Src/Task/OpenCVVideo.h | 39 +
main.cpp | 13 +
51 files changed, 8185 insertions(+)
create mode 100644 QT_IEK.pro
create mode 100644 QT_IEK.pro.user
create mode 100644 Src/Chart/Chart.cpp
create mode 100644 Src/Chart/Chart.h
create mode 100644 Src/Chart/ChartBar.cpp
create mode 100644 Src/Chart/ChartBar.h
create mode 100644 Src/Chart/ChartBaseSeries.cpp
create mode 100644 Src/Chart/ChartBaseSeries.h
create mode 100644 Src/Chart/ChartCurve.cpp
create mode 100644 Src/Chart/ChartCurve.h
create mode 100644 Src/Chart/ChartLine.cpp
create mode 100644 Src/Chart/ChartLine.h
create mode 100644 Src/Chart/ChartPie.cpp
create mode 100644 Src/Chart/ChartPie.h
create mode 100644 Src/Control/ControlDashBoard.cpp
create mode 100644 Src/Control/ControlDashBoard.h
create mode 100644 Src/Control/ControlRoundProBar.cpp
create mode 100644 Src/Control/ControlRoundProBar.h
create mode 100644 Src/Gui/BaseWidget.cpp
create mode 100644 Src/Gui/BaseWidget.h
create mode 100644 Src/Gui/DockWidget.cpp
create mode 100644 Src/Gui/DockWidget.h
create mode 100644 Src/Gui/MainWindow.cpp
create mode 100644 Src/Gui/MainWindow.h
create mode 100644 Src/Gui/ModuleWidget.cpp
create mode 100644 Src/Gui/ModuleWidget.h
create mode 100644 Src/Gui/OpenCVGLWidget.cpp
create mode 100644 Src/Gui/OpenCVGLWidget.h
create mode 100644 Src/Gui/SmallWindow.cpp
create mode 100644 Src/Gui/SmallWindow.h
create mode 100644 Src/Gui/TypeWindow.cpp
create mode 100644 Src/Gui/TypeWindow.h
create mode 100644 Src/Model/LoadDistributionModelDelegate.cpp
create mode 100644 Src/Model/LoadDistributionModelDelegate.h
create mode 100644 Src/Model/LoadDistributionTableView.cpp
create mode 100644 Src/Model/LoadDistributionTableView.h
create mode 100644 Src/Model/MoldProModelDelegate.cpp
create mode 100644 Src/Model/MoldProModelDelegate.h
create mode 100644 Src/Model/MoldProTableView.cpp
create mode 100644 Src/Model/MoldProTableView.h
create mode 100644 Src/Model/PartsInventoryModelDelegate.cpp
create mode 100644 Src/Model/PartsInventoryModelDelegate.h
create mode 100644 Src/Model/PartsInventoryTableView.cpp
create mode 100644 Src/Model/PartsInventoryTableView.h
create mode 100644 Src/Pub/PubCss.cpp
create mode 100644 Src/Pub/PubCss.h
create mode 100644 Src/Pub/PubFunction.cpp
create mode 100644 Src/Pub/PubFunction.h
create mode 100644 Src/Task/OpenCVVideo.cpp
create mode 100644 Src/Task/OpenCVVideo.h
create mode 100644 main.cpp
diff --git a/QT_IEK.pro b/QT_IEK.pro
new file mode 100644
index 0000000..6c97eaf
--- /dev/null
+++ b/QT_IEK.pro
@@ -0,0 +1,89 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2022-03-09T10:00:00
+#
+#-------------------------------------------------
+
+QT += core gui charts
+
+INCLUDEPATH += F:/lib_opencv/include/opencv \
+ F:/lib_opencv/include/opencv2 \
+ F:/lib_opencv/include
+
+LIBS += -L F:/lib_opencv/lib/libopencv_*.a
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = QT_IEK
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+CONFIG += c++11
+
+SOURCES += \
+ main.cpp \
+ Src/Gui/MainWindow.cpp \
+ Src/Gui/DockWidget.cpp \
+ Src/Chart/ChartCurve.cpp \
+ Src/Chart/ChartLine.cpp \
+ Src/Chart/Chart.cpp \
+ Src/Chart/ChartBar.cpp \
+ Src/Chart/ChartPie.cpp \
+ Src/Control/ControlDashBoard.cpp \
+ Src/Control/ControlRoundProBar.cpp \
+ Src/Gui/SmallWindow.cpp \
+ Src/Gui/BaseWidget.cpp \
+ Src/Pub/PubCss.cpp \
+ Src/Model/MoldProModelDelegate.cpp \
+ Src/Model/MoldProTableView.cpp \
+ Src/Model/LoadDistributionModelDelegate.cpp \
+ Src/Model/LoadDistributionTableView.cpp \
+ Src/Chart/ChartBaseSeries.cpp \
+ Src/Model/PartsInventoryModelDelegate.cpp \
+ Src/Model/PartsInventoryTableView.cpp \
+ Src/Gui/OpenCVGLWidget.cpp \
+ Src/Task/OpenCVVideo.cpp \
+ Src/Gui/TypeWindow.cpp \
+ Src/Gui/ModuleWidget.cpp \
+ Src/Pub/PubFunction.cpp
+
+HEADERS += \
+ Src/Gui/MainWindow.h \
+ Src/Gui/DockWidget.h \
+ Src/Chart/ChartCurve.h \
+ Src/Chart/ChartLine.h \
+ Src/Chart/Chart.h \
+ Src/Chart/ChartBar.h \
+ Src/Chart/ChartPie.h \
+ Src/Control/ControlDashBoard.h \
+ Src/Control/ControlRoundProBar.h \
+ Src/Gui/SmallWindow.h \
+ Src/Gui/BaseWidget.h \
+ Src/Pub/PubCss.h \
+ Src/Model/MoldProModelDelegate.h \
+ Src/Model/MoldProTableView.h \
+ Src/Model/LoadDistributionModelDelegate.h \
+ Src/Model/LoadDistributionTableView.h \
+ Src/Chart/ChartBaseSeries.h \
+ Src/Model/PartsInventoryModelDelegate.h \
+ Src/Model/PartsInventoryTableView.h \
+ Src/Gui/OpenCVGLWidget.h \
+ Src/Task/OpenCVVideo.h \
+ Src/Gui/TypeWindow.h \
+ Src/Gui/ModuleWidget.h \
+ Src/Pub/PubFunction.h
+
+# Default rules for deployment.
+qnx: target.path = /tmp/$${TARGET}/bin
+else: unix:!android: target.path = /opt/$${TARGET}/bin
+!isEmpty(target.path): INSTALLS += target
diff --git a/QT_IEK.pro.user b/QT_IEK.pro.user
new file mode 100644
index 0000000..2bfa78a
--- /dev/null
+++ b/QT_IEK.pro.user
@@ -0,0 +1,328 @@
+
+
+
+
+
+ EnvironmentId
+ {ae4a1ab9-8f5c-48c1-9d0f-3c0d553fd55e}
+
+
+ ProjectExplorer.Project.ActiveTarget
+ 0
+
+
+ ProjectExplorer.Project.EditorSettings
+
+ true
+ false
+ true
+
+ Cpp
+
+ CppGlobal
+
+
+
+ QmlJS
+
+ QmlJSGlobal
+
+
+ 2
+ UTF-8
+ false
+ 4
+ false
+ 80
+ true
+ true
+ 1
+ true
+ false
+ 0
+ true
+ true
+ 0
+ 8
+ true
+ 1
+ true
+ true
+ true
+ false
+
+
+
+ ProjectExplorer.Project.PluginSettings
+
+
+ -fno-delayed-template-parsing
+
+ true
+
+
+
+ ProjectExplorer.Project.Target.0
+
+ Desktop Qt 5.9.8 MinGW 32bit
+ Desktop Qt 5.9.8 MinGW 32bit
+ qt.qt5.598.win32_mingw53_kit
+ 0
+ 0
+ 0
+
+ F:/QTpro/Work/build-QT_IEK-Desktop_Qt_5_9_8_MinGW_32bit-Debug
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Debug
+ Debug
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 2
+ true
+
+
+ F:/QTpro/Work/build-QT_IEK-Desktop_Qt_5_9_8_MinGW_32bit-Release
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ false
+
+ false
+ false
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Release
+ Release
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+
+ F:/QTpro/Work/build-QT_IEK-Desktop_Qt_5_9_8_MinGW_32bit-Profile
+
+
+ true
+ qmake
+
+ QtProjectManager.QMakeBuildStep
+ true
+
+ false
+ true
+ false
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ false
+
+
+ false
+
+ 2
+ Build
+
+ ProjectExplorer.BuildSteps.Build
+
+
+
+ true
+ Make
+
+ Qt4ProjectManager.MakeStep
+
+ true
+ clean
+
+ false
+
+ 1
+ Clean
+
+ ProjectExplorer.BuildSteps.Clean
+
+ 2
+ false
+
+ Profile
+ Profile
+ Qt4ProjectManager.Qt4BuildConfiguration
+ 0
+ true
+
+ 3
+
+
+ 0
+ 部署
+
+ ProjectExplorer.BuildSteps.Deploy
+
+ 1
+ Deploy Configuration
+
+ ProjectExplorer.DefaultDeployConfiguration
+
+ 1
+
+
+ false
+ false
+ 1000
+
+ true
+
+ false
+ false
+ false
+ false
+ true
+ 0.01
+ 10
+ true
+ 1
+ 25
+
+ 1
+ true
+ false
+ true
+ valgrind
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+ 10
+ 11
+ 12
+ 13
+ 14
+
+ 2
+
+ QT_IEK
+
+ Qt4ProjectManager.Qt4RunConfiguration:F:/QTpro/Work/QT_IEK/QT_IEK.pro
+ QT_IEK.pro
+
+ 3768
+ false
+ true
+ true
+ false
+ false
+ true
+
+ F:/QTpro/Work/build-QT_IEK-Desktop_Qt_5_9_8_MinGW_32bit-Debug
+
+ 1
+
+
+
+ ProjectExplorer.Project.TargetCount
+ 1
+
+
+ ProjectExplorer.Project.Updater.FileVersion
+ 20
+
+
+ Version
+ 20
+
+
diff --git a/Src/Chart/Chart.cpp b/Src/Chart/Chart.cpp
new file mode 100644
index 0000000..b9ba056
--- /dev/null
+++ b/Src/Chart/Chart.cpp
@@ -0,0 +1,147 @@
+#include "Chart.h"
+#include
+#include
+#include
+
+Chart::Chart()
+{
+
+}
+
+Chart::~Chart()
+{
+
+}
+
+void Chart::InitChart()
+{
+ //---------------------------------图表----------------------
+ //设置系统主题
+// this->setTheme(QChart::ChartThemeBlueCerulean);
+ //是否启用动画
+// this->setAnimationOptions(QChart::AllAnimations);
+ //背景色设置 背景色 笔
+ this->setBackgroundBrush(QBrush(_chartPar._backBrush));
+// this->setBackgroundPen(QPen(_chartPar._pen));
+ this->setBackgroundVisible(true);
+ //设置数据是否本地化
+ this->setLocalizeNumbers(true);
+ //设置标题
+ this->setTitle("");
+ //标题字体
+ this->setTitleFont(QFont());
+ //标题刷
+ this->setTitleBrush(QBrush(QColor()));
+
+ //设置外边界全部为0
+ this->layout()->setContentsMargins(0, 0, 0, 0);
+ //设置内边界全部为0
+ this->setMargins(QMargins(0, 0, 0, 0));
+ //设置背景区域无圆角
+ this->setBackgroundRoundness(0);
+}
+
+void Chart::InitLegend()
+{
+ //---------------------------------标签-----------------------
+ this->legend()->setVisible(true);
+ //对齐
+ this->legend()->setAlignment(Qt::AlignTop);
+ //图例图标分离
+ //this->legend()->detachFromChart();
+ //设置背景是否可视
+ //this->legend()->setBackgroundVisible(true);
+ //设置背景自动填充
+ //this->legend()->setAutoFillBackground(true);
+ //设置标签颜色
+ this->legend()->setColor(QColor(255,255,255));
+ //设置边距left,top,right,bottom
+ //this->legend()->setContentsMargins(10,10,10,10);
+ //设置标签颜色
+// this->legend()->setLabelColor(QColor(255,128,255));
+ //设置是否可视
+ this->legend()->setVisible(true);
+ //设置背景色
+ //this->legend()->setBrush(QBrush(QColor(128,128,128,255)));
+ //设置画笔
+ //this->legend()->setPen(QPen(QColor(192,192, 192,192)));
+ //设置边框颜色
+// this->legend()->setBorderColor(QColor(255,255,170,185));
+
+// QFont font1;
+// font1.setItalic(!font1.italic());
+// font1.setPointSizeF(8);
+// font.setFamily("微软雅黑");
+// chart->legend()->setFont(font1);
+}
+
+void Chart::InitAxis()
+{
+ if(_axisPar.xNameList.size() > 0)
+ {
+ QBarCategoryAxis* axis = new QBarCategoryAxis ();
+ axis->setLabelsBrush(QBrush(QColor(235,235,235)));
+ axis->append(_axisPar.xNameList);
+ this->setAxisX(axis);
+ }
+ else if(_axisPar.xCount > 0)
+ {
+ QValueAxis* xAxis = new QValueAxis();
+ xAxis->setLabelsBrush(QBrush(QColor(235,235,235)));
+ xAxis->setTitleText(_axisPar.xTitle);
+ xAxis->setTitleFont(QFont());
+ xAxis->setRange(_axisPar.xMin,_axisPar.xMax);
+ xAxis->setTickCount(_axisPar.xCount);
+ if(!_axisPar.xformat.isEmpty())
+ {
+ xAxis->setLabelFormat(_axisPar.xformat);
+ xAxis->setLabelsVisible(true);
+ }
+ this->setAxisX(xAxis);
+ }
+
+ if(_axisPar.yNameList.size() > 0)
+ {
+ QBarCategoryAxis* axis = new QBarCategoryAxis();
+ axis->setLabelsBrush(QBrush(QColor(235,235,235)));
+ axis->append(_axisPar.yNameList);
+ this->setAxisY(axis);
+ }
+ else if(_axisPar.yCount > 0)
+ {
+ QValueAxis* Axis = new QValueAxis();
+ Axis->setLabelsBrush(QBrush(QColor(235,235,235)));
+ Axis->setTitleText(_axisPar.yTitle);
+ Axis->setTitleFont(QFont());
+ Axis->setRange(_axisPar.yMin,_axisPar.yMax);
+ Axis->setTickCount(_axisPar.yCount);
+ if(!_axisPar.yformat.isEmpty())
+ {
+ Axis->setLabelFormat(_axisPar.yformat);
+ Axis->setLabelsVisible(true);
+ }
+ this->setAxisY(Axis);
+ }
+
+// QValueAxis* yAxis = new QValueAxis();
+// yAxis->setTitleText("");
+// yAxis->setTitleFont(font);
+// yAxis->setRange(0,120);
+// yAxis->setTickCount(13);
+
+// chart->addAxis(xAxis,Qt::AlignBottom);
+// chart->addAxis(yAxis,Qt::AlignLeft);
+
+
+ // QBarCategoryAxis *pAxisX = new QBarCategoryAxis();
+}
+
+void Chart::Set(AxisPar par)
+{
+ _axisPar = par;
+}
+
+void Chart::Set(ChartPar par)
+{
+ _chartPar = par;
+}
diff --git a/Src/Chart/Chart.h b/Src/Chart/Chart.h
new file mode 100644
index 0000000..bfc2a02
--- /dev/null
+++ b/Src/Chart/Chart.h
@@ -0,0 +1,58 @@
+#ifndef _CHART_H_
+#define _CHART_H_
+
+#include
+
+QT_CHARTS_USE_NAMESPACE
+
+//图表参数
+struct ChartPar
+{
+ QBrush _backBrush;
+ QPen _pen;
+};
+
+//标签参数
+struct LegendPar
+{
+ //后续要什么加什么
+};
+
+//XY参数
+struct AxisPar
+{
+ QString xTitle = "";
+ QStringList xNameList = QStringList();
+ int xMin = 0;
+ int xMax = 0;
+ int xCount = 0;
+ bool xIsShow = false;
+ QString xformat = "";
+
+ QString yTitle = "";
+ QStringList yNameList = QStringList();
+ int yMin = 0;
+ int yMax = 0;
+ int yCount = 0;
+ QString yformat = "";
+};
+
+class Chart : public QChart
+{
+public:
+ Chart();
+ ~Chart();
+
+ void InitChart();
+ void InitLegend();
+ void InitAxis();
+
+ void Set(AxisPar axisPar);
+ void Set(ChartPar);
+
+private:
+ ChartPar _chartPar;
+ AxisPar _axisPar;
+};
+
+#endif //_CHART_H_
diff --git a/Src/Chart/ChartBar.cpp b/Src/Chart/ChartBar.cpp
new file mode 100644
index 0000000..0ab0196
--- /dev/null
+++ b/Src/Chart/ChartBar.cpp
@@ -0,0 +1,530 @@
+#include "ChartBar.h"
+#include
+#include
+#include
+#include
+
+ChartBar::ChartBar(int index,QWidget *parent)
+ :ChartBaseSeries (parent)
+{
+ _index = index;
+}
+
+ChartBar::~ChartBar()
+{
+
+}
+
+void ChartBar::Init(QList bar)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+
+ QBarSeries* barSeries = nullptr;
+ QStackedBarSeries* stackedBarSeries = nullptr;
+ QHorizontalBarSeries* hBarSeries = nullptr;
+ QHorizontalStackedBarSeries* hstackedBarSeries = nullptr;
+ if(_index == 1)
+ {
+ barSeries = InitBarSeries(bar);
+ }
+ else if(_index == 2)
+ {
+ stackedBarSeries = InitStackedBarSeries(bar);
+ }
+ else if(_index == 3)
+ {
+ barSeries = InitBarSeries(bar);
+ }
+ else if(_index == 4)
+ {
+ hBarSeries = InitHBarSeries(bar);
+ }
+ else if(_index == 5)
+ {
+ hstackedBarSeries = InithStackedBarSeries(bar);
+ }
+ else if(_index == 6)
+ {
+ hBarSeries = InitHBarSeries(bar);
+ }
+
+ Chart* chart = new Chart();
+ chart->Set(_cPar);
+ chart->Set(_aPar);
+ chart->InitChart();
+ chart->InitAxis();
+ if(_index == 1 || _index == 3)
+ {
+ chart->addSeries(barSeries);
+ if(chart->axisX() != nullptr)
+ chart->setAxisX(chart->axisX(),barSeries);
+ if(chart->axisY() != nullptr)
+ chart->setAxisY(chart->axisY(),barSeries);
+ }
+ else if(_index == 2)
+ {
+ chart->addSeries(stackedBarSeries);
+ if(chart->axisX() != nullptr)
+ chart->setAxisX(chart->axisX(),stackedBarSeries);
+ if(chart->axisY() != nullptr)
+ chart->setAxisY(chart->axisY(),stackedBarSeries);
+ }
+ else if(_index == 4 || _index == 6)
+ {
+ chart->addSeries(hBarSeries);
+ if(chart->axisX() != nullptr)
+ chart->setAxisX(chart->axisX(),hBarSeries);
+ if(chart->axisY() != nullptr)
+ chart->setAxisY(chart->axisY(),hBarSeries);
+ }
+ else if(_index == 5)
+ {
+ chart->addSeries(hstackedBarSeries);
+ if(chart->axisX() != nullptr)
+ chart->setAxisX(chart->axisX(),hstackedBarSeries);
+ if(chart->axisY() != nullptr)
+ chart->setAxisY(chart->axisY(),hstackedBarSeries);
+ }
+ chart->InitLegend();
+ if(_index == 1)
+ {
+ if(bar.size() == 1)
+ {
+ if(_max > 0)
+ {
+ SetMoreColor(barSeries,bar);
+ }
+ }
+ }
+ QChartView* view = new QChartView(chart);
+ mLayout->addWidget(view);
+ this->setLayout(mLayout);
+
+}
+
+QList ChartBar::GetBPar(BParListModel index)
+{
+ QList _valueList;
+ switch (index)
+ {
+ case BPRODUCTIONSUMVALUE1:
+ {
+ QList valueList;
+ QList List1;
+ List1 << 2 << 4 << 4;
+ QList List2;
+ List2 << 2 << 2 << 3;
+ valueList.push_back(BarPer{"",List1,QColor(255,255,255),QColor(0,175,179)});
+ valueList.push_back(BarPer{"",List2,QColor(255,255,255),QColor(32,158,222)});
+ _valueList = valueList;
+ break;
+ }
+ case BPRODUCTIONSUMVALUE2:
+ {
+ QList valueList;
+ QList List3;
+ List3 << 9814 << 9952 << 5000;
+ QList List4;
+ List4 << 6867 << 5000 << 7927;
+ valueList.push_back(BarPer{"",List3,QColor(255,255,255),QColor(0,175,179),});
+ valueList.push_back(BarPer{"",List4,QColor(255,255,255),QColor(32,158,222)});
+ _valueList = valueList;
+ break;
+ }
+ case BPLANFORTHEMONTHVALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 452 << 332 << 232 << 380;
+ QList valueList2 = QList() << 227 << 412 << 295 << 549;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(0,176,180)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(32,158,222)});
+ _valueList = valueList;
+ break;
+ }
+ case BPLANFORTHEMONTHVALUE2:
+ {
+ QList valueList;
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ QList valueList2 = QList() << 0;
+ QList valueList3 = QList() << 0;
+ QList valueList4 = QList() << 0;
+ for(int var =0; var < 31;++var)
+ {
+ valueList2.append(qrand()%(20));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList3.append(qrand()%(20));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList4.append(qrand()%(20));
+ }
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(0,176,180)});
+ valueList.push_back(BarPer{"",valueList3,QColor(255,255,255),QColor(255,192,0)});
+ valueList.push_back(BarPer{"",valueList4,QColor(255,255,255),QColor(32,158,222)});
+ _valueList = valueList;
+ break;
+ }
+ case BLOADDISTRIBUTIONVALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList();
+ QList valueList2 = QList();
+ for(int var = 0; var < 6;++var)
+ {
+ valueList1.append(qrand()%(40));
+ }
+ for(int var =0; var < 6;++var)
+ {
+ valueList2.append(qrand()%(40));
+ }
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(0,176,180)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(255,42,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BPASSEDTHEINSPECTIONVALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 77 << 68 << 43 << 30 << 47 << 30;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(255,42,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BQUALITYMANAGEMENTVALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 46 << 39 << 30 << 81 << 43 << 30;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(255,42,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BCHARTBAR1VALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 57 << 72 << 88 << 41 << 88 << 55;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(255,42,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BCHARTBAR1VALUE2:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 72 << 74 << 87 << 64 << 43 << 43;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(255,42,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BCHARTBAR2VALUE1:
+ {
+ QList valueList;
+ QList valueList1;
+ QList valueList2;
+ QList valueList3;
+
+ valueList1.push_back(0);
+ valueList2.push_back(0);
+ valueList3.push_back(0);
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int var =0; var < 31;++var)
+ {
+ valueList1.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList2.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList3.append(qrand()%(33));
+ }
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(1,178,179)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(1,133,189)});
+ valueList.push_back(BarPer{"",valueList3,QColor(255,255,255),QColor(253,191,1)});
+ _valueList = valueList;
+ break;
+
+ }
+ case BCHARTBAR2VALUE2:
+ {
+ QList valueList;
+ QList valueList1;
+ QList valueList2;
+ QList valueList3;
+
+ valueList1.push_back(0);
+ valueList2.push_back(0);
+ valueList3.push_back(0);
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int var =0; var < 31;++var)
+ {
+ valueList1.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList2.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList3.append(qrand()%(33));
+ }
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(52,182,214)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(254,183,41)});
+ valueList.push_back(BarPer{"",valueList3,QColor(255,255,255),QColor(234,81,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BCHARTBAR3VALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 281 << 461 << 299 << 131;
+ QList valueList2 = QList() << 453 << 336 << 428 << 398;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(1,176,181)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(0,113,193)});
+ _valueList = valueList;
+ break;
+ }
+ case BCHARTBAR3VALUE2:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 210 << 213 << 259 << 245;
+ QList valueList2 = QList() << 177 << 473 << 177 << 512;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(253,139,40)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(117,55,118)});
+ _valueList = valueList;
+ break;
+ }
+ case BCAHRTBAR4VALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 88 << 45 << 42 << 75 << 71 << 83;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(253,139,40)});
+ _valueList = valueList;
+ break;
+ }
+ case BCAHRTBAR5VALUE1:
+ {
+ QList valueList;
+ QList valueList1;
+ QList valueList2;
+ QList valueList3;
+
+ valueList1.push_back(0);
+ valueList2.push_back(0);
+ valueList3.push_back(0);
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int var =0; var < 31;++var)
+ {
+ valueList1.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList2.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList3.append(qrand()%(33));
+ }
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(1,178,179)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(1,133,189)});
+ valueList.push_back(BarPer{"",valueList3,QColor(255,255,255),QColor(253,191,1)});
+ _valueList = valueList;
+ break;
+ }
+ case BCAHRTBAR5VALUE2:
+ {
+ QList valueList;
+ QList valueList1;
+ QList valueList2;
+ QList valueList3;
+
+ valueList1.push_back(0);
+ valueList2.push_back(0);
+ valueList3.push_back(0);
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int var =0; var < 31;++var)
+ {
+ valueList1.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList2.append(qrand()%(33));
+ }
+ for(int var =0; var < 31;++var)
+ {
+ valueList3.append(qrand()%(33));
+ }
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(52,182,214)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(254,183,41)});
+ valueList.push_back(BarPer{"",valueList3,QColor(255,255,255),QColor(234,81,45)});
+ _valueList = valueList;
+ break;
+ }
+ case BCAHRTBAR6VALUE1:
+ {
+ QList valueList;
+ QList valueList1 = QList() << 40 << 53 << 90;
+ QList valueList2 = QList() << 68 << 64 << 58;
+ valueList.push_back(BarPer{"",valueList1,QColor(255,255,255),QColor(0,113,194)});
+ valueList.push_back(BarPer{"",valueList2,QColor(255,255,255),QColor(1,176,181)});
+ _valueList = valueList;
+ break;
+ }
+ }
+
+ return _valueList;
+}
+
+void ChartBar::SetMax(int max)
+{
+ _max = max;
+}
+
+void ChartBar::SetMaxColor(QColor color)
+{
+ _maxColor = color;
+}
+
+void ChartBar::SetMoreColor(QBarSeries* barSeries, QList List)
+{
+ QList barSetList = barSeries->barSets();
+
+ qDebug() << barSetList.at(0)->at(1);
+ if(barSetList.size() == List.size())
+ return;
+ for(int i = 0 ; i < barSetList.size(); i++)
+ {
+ if(List.at(0)._value.at(i) > _max)
+ {
+ barSetList.at(i)->setColor(_maxColor);
+ }
+ }
+}
+
+
+QBarSeries *ChartBar::InitBarSeries(QList list)
+{
+ QFont fontText("SimHei");
+ fontText.setPixelSize(12);
+
+ QBarSeries* barSet = new QBarSeries();
+ //设置文字可视化
+ barSet->setLabelsVisible(true);
+ //设置文字格式 高
+ barSet->setLabelsFormat("@value");
+ //设置文字所处位置
+ barSet->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
+
+ for(auto &i : list)
+ {
+ //创建柱
+ QBarSet* set = new QBarSet(i._name);
+ //设置字体
+ set->setLabelFont(fontText);
+ //设置背景色
+ set->setBrush(i._brushColor);
+ //设置边框色
+ set->setBorderColor(i._borderColor);
+ //设置值
+ set->append(i._value);
+ //添加
+ barSet->append(set);
+
+ }
+
+ return barSet;
+}
+
+QStackedBarSeries *ChartBar::InitStackedBarSeries(QList list)
+{
+ QFont fontText("SimHei");
+ fontText.setPixelSize(12);
+ QStackedBarSeries* barSet = new QStackedBarSeries();
+ //设置文字可视化
+ barSet->setLabelsVisible(true);
+ //设置文字格式 高
+ barSet->setLabelsFormat("@value");
+ //设置文字所处位置
+ barSet->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
+
+ for(auto &i : list)
+ {
+ //创建柱
+ QBarSet* set = new QBarSet(i._name);
+ //设置字体
+ set->setLabelFont(fontText);
+ //设置背景色
+ set->setBrush(i._brushColor);
+ //设置边框色
+ set->setBorderColor(i._borderColor);
+ //设置值
+ set->append(i._value);
+ //添加
+ barSet->append(set);
+ }
+ return barSet;
+
+}
+
+QHorizontalBarSeries *ChartBar::InitHBarSeries(QList list)
+{
+ QFont fontText("SimHei");
+ fontText.setPixelSize(12);
+ QHorizontalBarSeries* barSet = new QHorizontalBarSeries();
+ //设置文字可视化
+ barSet->setLabelsVisible(true);
+ //设置文字格式 高
+ barSet->setLabelsFormat("@value");
+ //设置文字所处位置
+ barSet->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
+
+ for(auto &i : list)
+ {
+ //创建柱
+ QBarSet* set = new QBarSet(i._name);
+ //设置字体
+ set->setLabelFont(fontText);
+ //设置背景色
+ set->setBrush(i._brushColor);
+ //设置边框色
+ set->setBorderColor(i._borderColor);
+ //设置值
+ set->append(i._value);
+ //添加
+ barSet->append(set);
+ }
+ return barSet;
+}
+
+QHorizontalStackedBarSeries* ChartBar::InithStackedBarSeries(QList list)
+{
+ QFont fontText("SimHei");
+ fontText.setPixelSize(12);
+ QHorizontalStackedBarSeries* barSet = new QHorizontalStackedBarSeries();
+ //设置文字可视化
+ barSet->setLabelsVisible(true);
+ //设置文字格式 高
+ barSet->setLabelsFormat("@value");
+ //设置文字所处位置
+ barSet->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);
+
+ for(auto &i : list)
+ {
+ //创建柱
+ QBarSet* set = new QBarSet(i._name);
+ //设置字体
+ set->setLabelFont(fontText);
+ //设置背景色
+ set->setBrush(i._brushColor);
+ //设置边框色
+ set->setBorderColor(i._borderColor);
+ //设置值
+ set->append(i._value);
+ //添加
+ barSet->append(set);
+ }
+ return barSet;
+}
diff --git a/Src/Chart/ChartBar.h b/Src/Chart/ChartBar.h
new file mode 100644
index 0000000..06b53cd
--- /dev/null
+++ b/Src/Chart/ChartBar.h
@@ -0,0 +1,68 @@
+#ifndef _CHART_BARSET_H_
+#define _CHART_BARSET_H_
+
+#include "ChartBaseSeries.h"
+#include
+#include
+#include
+#include
+#include
+#include
+#include "Chart.h"
+
+QT_CHARTS_USE_NAMESPACE//QtChart名空间
+
+enum BParListModel
+{
+ BPRODUCTIONSUMVALUE1,
+ BPRODUCTIONSUMVALUE2,
+ BPLANFORTHEMONTHVALUE1,
+ BPLANFORTHEMONTHVALUE2,
+ BLOADDISTRIBUTIONVALUE1,
+ BPASSEDTHEINSPECTIONVALUE1,
+ BQUALITYMANAGEMENTVALUE1,
+ BCHARTBAR1VALUE1,
+ BCHARTBAR1VALUE2,
+ BCHARTBAR2VALUE1,
+ BCHARTBAR2VALUE2,
+ BCHARTBAR3VALUE1,
+ BCHARTBAR3VALUE2,
+ BCAHRTBAR4VALUE1,
+ BCAHRTBAR5VALUE1,
+ BCAHRTBAR5VALUE2,
+ BCAHRTBAR6VALUE1,
+};
+
+
+struct BarPer
+{
+ QString _name;
+ QList _value;
+ QColor _borderColor;
+ QColor _brushColor;
+};
+
+class ChartBar : public ChartBaseSeries
+{
+ Q_OBJECT
+public:
+ ChartBar(int index,QWidget* parent = nullptr);
+ ~ChartBar();
+
+ void Init(QList list);
+ QList GetBPar(BParListModel);
+ void SetMoreColor(QBarSeries*,QList);
+ void SetMax(int max);
+ void SetMaxColor(QColor);
+private:
+ QBarSeries* InitBarSeries(QList list);
+ QStackedBarSeries* InitStackedBarSeries(QList list);
+ QHorizontalBarSeries* InitHBarSeries(QList list);
+ QHorizontalStackedBarSeries* InithStackedBarSeries(QList list);
+ int _index = 0;
+ int _max = 0;
+ QColor _maxColor = QColor();
+};
+
+
+#endif //_CHART_BARSET_H_
diff --git a/Src/Chart/ChartBaseSeries.cpp b/Src/Chart/ChartBaseSeries.cpp
new file mode 100644
index 0000000..126c182
--- /dev/null
+++ b/Src/Chart/ChartBaseSeries.cpp
@@ -0,0 +1,500 @@
+#include "ChartBaseSeries.h"
+
+ChartBaseSeries::ChartBaseSeries(QWidget *parent)
+{
+
+}
+
+ChartBaseSeries::~ChartBaseSeries()
+{
+
+}
+
+AxisPar ChartBaseSeries::GetPar(AParModel model)
+{
+ AxisPar aPar;
+ switch(model)
+ {
+ case APRODUCTIONSUM1:
+ {
+ AxisPar par;
+ par.xMax = 5;
+ par.xCount = 1;
+ par.yNameList = QStringList() << "设变" << "修膜" << "新模";
+ aPar = par;
+ break;
+ }
+ case APRODUCTIONSUM2:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xNameList = QStringList() << "1月" << "2月" << "3月" << "4月" << "5月" << "6月" << "7月" << "8月";
+ aPar = par;
+ break;
+ }
+ case APRODUCTIONSUM3:
+ {
+ AxisPar par;
+ par.xCount = 1;
+ par.xMax = 12000;
+ par.yNameList = QStringList() << "设变" << "修膜" << "新模";
+ aPar = par;
+ break;
+ }
+ case APRODUCTIONSUM4:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xNameList = QStringList() << "1月" << "2月" << "3月" << "4月" << "5月" << "6月" << "7月" << "8月";
+ aPar = par;
+ break;
+ }
+ case APLANFORTHEMONTH1:
+ {
+ AxisPar par;
+ par.yMax = 700;
+ par.xCount = 8;
+ par.xNameList = QStringList() << "摸仁" << "不会" << "辅件" << "电极";
+ aPar = par;
+ break;
+ }
+ case APLANFORTHEMONTH2:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.xMax = 32;
+ par.yCount = 6;
+ par.xCount = 33;
+ aPar = par;
+ break;
+ }
+ case ALOADDISTRIBUTION1:
+ {
+ AxisPar par;
+ par.yMax = 90;
+ par.yCount = 10;
+ par.xNameList = QStringList() << "CNC组" << "CNC精" << "EDM" << "WEDM" << "锐床" << "磨末";
+ aPar = par;
+ break;
+ }
+ case ALOADDISTRIBUTION2:
+ {
+ AxisPar par;
+ par.yMax = 200;
+ par.yCount = 9;
+ par.xMax = 8;
+ par.xCount = 9;
+ aPar = par;
+ break;
+ }
+ case APASSEDTHEINSPECTION1:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 7;
+ par.xMax = 11;
+ par.xCount = 12;
+ aPar = par;
+ break;
+ }
+ case APASSEDTHEINSPECTION2:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 7;
+ par.xMax = 11;
+ par.xCount = 12;
+ aPar = par;
+ break;
+ }
+ case APASSEDTHEINSPECTION3:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xNameList = QStringList() << "CNC组" << "CNC精" << "EDM" << "WEDM" << "铣床" << "磨床";
+ par.xCount = 0;
+ aPar = par;
+ break;
+ }
+ case AQUALITYMANAGEMENT1:
+ {
+ break;
+ }
+ case AQUALITYMANAGEMENT2:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xNameList = QStringList() << "CNC" << "EDM" << "线割" << "磨床" << "铣床" << "外协";
+ aPar = par;
+ break;
+ }
+ case AQUALITYMANAGEMENT3:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 7;
+ par.xMax = 32;
+ par.xCount = 33;
+ aPar = par;
+ break;
+ }
+ case ACHARTLINE:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 13;
+// par.xMax = 12;
+// par.xCount = 13;
+ par.xNameList = QStringList() << "1月" << "2月" << "3月" << "4月" << "5月" << "6月"
+ << "7月" << "8月" << "9月" << "10月" << "11月" << "12月";
+ aPar = par;
+ break;
+ }
+ case ACHARTCURVE1:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 5;
+ par.xMax = 16;
+ par.xCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTCURVE2:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 5;
+ par.xMax = 16;
+ par.xCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTCURVE3:
+ {
+ AxisPar par;
+ par.yMax = 120;
+ par.yCount = 5;
+ par.xMax = 16;
+ par.xCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR1:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.yformat = "%.0f%";
+ par.xNameList = QStringList() << "项目1" << "项目2" << "项目3" << "项目4" << "项目5" << "项目6";
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR2:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.yformat = "%.0f%";
+ par.xNameList = QStringList() << "小组1" << "小组2" << "小组3" << "小组4" << "小组5" << "小组6";
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR3:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xMax = 32;
+ par.xCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR4:
+ {
+ AxisPar par;
+ par.yMax = 100;
+ par.yCount = 6;
+ par.xMax = 32;
+ par.xCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR5:
+ {
+ AxisPar par;
+ par.yMax = 600;
+ par.yCount = 7;
+ par.xNameList = QStringList() << "模仁" << "揽件" << "辅件" << "电极";
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR6:
+ {
+ AxisPar par;
+ par.yMax = 600;
+ par.yCount = 7;
+ par.xNameList = QStringList() << "模仁" << "揽件" << "辅件" << "电极";
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR7:
+ {
+ AxisPar par;
+ par.xMax = 100;
+ par.xCount = 6;
+ par.yNameList = QStringList() << "项目1" << "项目2" << "项目3" << "项目4" << "项目5" << "项目6";
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR8:
+ {
+ AxisPar par;
+ par.xMax = 100;
+ par.xCount = 6;
+ par.yMax = 32;
+ par.yCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR9:
+ {
+ AxisPar par;
+ par.xMax = 100;
+ par.xCount = 6;
+ par.yMax = 32;
+ par.yCount = 17;
+ aPar = par;
+ break;
+ }
+ case ACHARTBAR10:
+ {
+ AxisPar par;
+ par.xMax = 100;
+ par.xCount = 1;
+ par.yNameList = QStringList() << "设变" << "修膜" << "新模";
+ aPar = par;
+ break;
+ }
+ }
+ return aPar;
+}
+
+ChartPar ChartBaseSeries::GetPar(CParModel index)
+{
+ ChartPar _cPar;
+ switch (index)
+ {
+ case CPRODUCTIONSUM1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPRODUCTIONSUM2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPRODUCTIONSUM3:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPRODUCTIONSUM4:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPLANFORTHEMONTH1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPLANFORTHEMONTH2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CLOADDISTRIBUTION1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CLOADDISTRIBUTION2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPASSEDTHEINSPECTION1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPASSEDTHEINSPECTION2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CPASSEDTHEINSPECTION3:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CQUALITYMANAGEMENT1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CQUALITYMANAGEMENT2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CQUALITYMANAGEMENT3:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTLINE:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTCURVE1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTCURVE2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTCURVE3:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(40,42,76));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR1:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR2:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR3:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR4:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR5:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR6:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR7:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR8:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR9:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ case CCHARTBAR10:
+ {
+ ChartPar cPar;
+ cPar._backBrush = QBrush(QColor(18,60,120));
+ _cPar = cPar;
+ break;
+ }
+ }
+ return _cPar;
+}
+
+void ChartBaseSeries::Set(ChartPar par)
+{
+ _cPar = par;
+}
+
+void ChartBaseSeries::Set(AxisPar par)
+{
+ _aPar = par;
+}
diff --git a/Src/Chart/ChartBaseSeries.h b/Src/Chart/ChartBaseSeries.h
new file mode 100644
index 0000000..a5e1a8b
--- /dev/null
+++ b/Src/Chart/ChartBaseSeries.h
@@ -0,0 +1,92 @@
+#ifndef _CHART_BASE_SERIES_H_
+#define _CHART_BASE_SERIES_H_
+
+#include
+#include "Chart.h"
+
+enum AParModel
+{
+ APRODUCTIONSUM1,
+ APRODUCTIONSUM2,
+ APRODUCTIONSUM3,
+ APRODUCTIONSUM4,
+ APLANFORTHEMONTH1,
+ APLANFORTHEMONTH2,
+ ALOADDISTRIBUTION1,
+ ALOADDISTRIBUTION2,
+ APASSEDTHEINSPECTION1,
+ APASSEDTHEINSPECTION2,
+ APASSEDTHEINSPECTION3,
+ AQUALITYMANAGEMENT1,
+ AQUALITYMANAGEMENT2,
+ AQUALITYMANAGEMENT3,
+ ACHARTLINE,
+ ACHARTCURVE1,
+ ACHARTCURVE2,
+ ACHARTCURVE3,
+ ACHARTBAR1,
+ ACHARTBAR2,
+ ACHARTBAR3,
+ ACHARTBAR4,
+ ACHARTBAR5,
+ ACHARTBAR6,
+ ACHARTBAR7,
+ ACHARTBAR8,
+ ACHARTBAR9,
+ ACHARTBAR10,
+};
+
+enum CParModel
+{
+ CPRODUCTIONSUM1,
+ CPRODUCTIONSUM2,
+ CPRODUCTIONSUM3,
+ CPRODUCTIONSUM4,
+ CPLANFORTHEMONTH1,
+ CPLANFORTHEMONTH2,
+ CLOADDISTRIBUTION1,
+ CLOADDISTRIBUTION2,
+ CPASSEDTHEINSPECTION1,
+ CPASSEDTHEINSPECTION2,
+ CPASSEDTHEINSPECTION3,
+ CQUALITYMANAGEMENT1,
+ CQUALITYMANAGEMENT2,
+ CQUALITYMANAGEMENT3,
+ CCHARTLINE,
+ CCHARTCURVE1,
+ CCHARTCURVE2,
+ CCHARTCURVE3,
+ CCHARTBAR1,
+ CCHARTBAR2,
+ CCHARTBAR3,
+ CCHARTBAR4,
+ CCHARTBAR5,
+ CCHARTBAR6,
+ CCHARTBAR7,
+ CCHARTBAR8,
+ CCHARTBAR9,
+ CCHARTBAR10,
+
+};
+
+class ChartBaseSeries : public QWidget
+{
+ Q_OBJECT
+public:
+ ChartBaseSeries(QWidget* parent = nullptr);
+ ~ChartBaseSeries();
+
+ AxisPar GetPar(AParModel);
+ ChartPar GetPar(CParModel);
+ void Set(ChartPar par);
+ void Set(AxisPar par);
+protected:
+ ChartPar _cPar;
+ AxisPar _aPar;
+
+ QMap _aMapList;
+ QMap _cMapList;
+
+};
+
+#endif //_CHART_BASE_SERIES_H_
diff --git a/Src/Chart/ChartCurve.cpp b/Src/Chart/ChartCurve.cpp
new file mode 100644
index 0000000..e3eac4c
--- /dev/null
+++ b/Src/Chart/ChartCurve.cpp
@@ -0,0 +1,147 @@
+#include "ChartCurve.h"
+#include
+#include
+#include "Chart.h"
+#include "QTime"
+
+ChartCurve::ChartCurve(QWidget *parent)
+ :ChartBaseSeries(parent)
+{
+
+}
+
+
+void ReadData()
+{
+
+}
+
+ChartCurve::~ChartCurve()
+{
+
+}
+
+QList ChartCurve::GetCuPar(CuParListModel index)
+{
+ QList cuPar;
+ switch (index)
+ {
+ case CUCHARTCURVE1:
+ {
+ QList valueList;
+ QList point1;
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int i = 0; i < 15; i++)
+ {
+ point1.append(QPointF(i + 1,qrand() % 100));
+ }
+ valueList.push_back(CurvePar{QColor(73,183,199),"",point1});
+ cuPar = valueList;
+ break;
+ }
+ case CUCHARTCURVE2:
+ {
+ QList valueList;
+ QList point1;
+ qsrand(QTime(0,6,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int i = 0; i < 15; i++)
+ {
+ point1.append(QPointF(i + 1,qrand() % 100));
+ }
+ valueList.push_back(CurvePar{QColor(96,79,121),"",point1});
+ cuPar = valueList;
+ break;
+ }
+ case CUCHARTCURVE3:
+ {
+ QList valueList;
+ QList point1;
+ qsrand(QTime(0,0,3).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int i = 0; i < 15; i++)
+ {
+ point1.append(QPointF(i + 1,qrand() % 100));
+ }
+ valueList.push_back(CurvePar{QColor(254,137,44),"",point1});
+ cuPar = valueList;
+ break;
+ }
+ }
+ return cuPar;
+}
+
+void ChartCurve::Init(QList cuPar)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+
+ QList SeriesList;
+ for(int i = 0; i < cuPar.size(); i++)
+ {
+ QSplineSeries* lineSeries = InitLine(cuPar.at(i).Color,cuPar.at(i).name,cuPar.at(i).list);
+ SeriesList.push_back(lineSeries);
+ }
+ //生成图表
+ Chart* chart = new Chart();
+ chart->Set(_cPar);
+ chart->Set(_aPar);
+ chart->InitChart();
+ chart->InitAxis();
+ for(auto& i : SeriesList)
+ {
+ chart->addSeries(i);
+ chart->setAxisX(chart->axisX(),i);
+ chart->setAxisY(chart->axisY(),i);
+ }
+ chart->InitLegend();
+
+ //生成View
+ QChartView *chartView = new QChartView(chart);
+ chartView->setRenderHint(QPainter::Antialiasing);
+
+ mLayout->addWidget(chartView);
+ this->setLayout(mLayout);
+}
+
+void ChartCurve::SetPointShow(bool isShow)
+{
+ isPointLabelShow = isShow;
+}
+
+QSplineSeries* ChartCurve::InitLine(QColor color,QString name, QList list)
+{
+ QFont font;
+ font.setItalic(!font.italic());
+ font.setPointSizeF(15);
+ font.setFamily("微软雅黑");
+
+ QSplineSeries* lineSeries = new QSplineSeries();
+ //添加数据
+ lineSeries->append(list);
+ //设置线段的名称
+ lineSeries->setName(name);
+ //设置线段的颜色
+ lineSeries->setColor(QColor());
+ //设置线段是否可视话
+ lineSeries->setVisible(true);
+ //点标签文字是否可见
+ lineSeries->setPointLabelsVisible(isPointLabelShow);
+ //点标签字体
+ lineSeries->setPointLabelsFont(font);
+ //点标签颜色
+ lineSeries->setPointLabelsColor(QColor(color));
+ //点标签格式
+ lineSeries->setPointLabelsFormat("@yPoint");
+ //是否切割边缘点标签,默认为true
+ lineSeries->setPointLabelsClipping(true);
+ //设置点是否可视
+ lineSeries->setPointsVisible(true);
+ //设置笔
+ lineSeries->setPen(QPen(QBrush(color),2));
+ //使用opengl渲染
+ lineSeries->setUseOpenGL(true);
+
+ return lineSeries;
+}
+
+
diff --git a/Src/Chart/ChartCurve.h b/Src/Chart/ChartCurve.h
new file mode 100644
index 0000000..b4a06aa
--- /dev/null
+++ b/Src/Chart/ChartCurve.h
@@ -0,0 +1,45 @@
+#ifndef _CHART_CURVE_H_
+#define _CHART_CURVE_H_
+
+#include
+#include "ChartBaseSeries.h"
+
+#include //显示图表
+#include
+#include
+#include
+#include
+
+QT_CHARTS_USE_NAMESPACE//QtChart名空间
+
+enum CuParListModel
+{
+ CUCHARTCURVE1,
+ CUCHARTCURVE2,
+ CUCHARTCURVE3
+};
+
+struct CurvePar
+{
+ QColor Color;
+ QString name;
+ QList list;
+};
+
+class ChartCurve : public ChartBaseSeries
+{
+ Q_OBJECT
+public:
+ ChartCurve(QWidget* parent = nullptr);
+ ~ChartCurve();
+
+ QList GetCuPar(CuParListModel);
+ void Init(QList);
+ void SetPointShow(bool);
+private:
+ QSplineSeries* InitLine(QColor,QString,QList list);
+ bool isPointLabelShow = false;
+};
+
+
+#endif //_CHART_CURVE_H_
diff --git a/Src/Chart/ChartLine.cpp b/Src/Chart/ChartLine.cpp
new file mode 100644
index 0000000..95cb13a
--- /dev/null
+++ b/Src/Chart/ChartLine.cpp
@@ -0,0 +1,255 @@
+#include "ChartLine.h"
+#include
+#include
+#include
+#include
+
+ChartLine::ChartLine(QWidget *parent)
+ :ChartBaseSeries(parent)
+{
+
+}
+
+ChartLine::~ChartLine()
+{
+
+}
+
+void ChartLine::Init(QList linepar)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+
+ QList SeriesList;
+ for(auto &i : linepar)
+ {
+ QLineSeries* lineSeries = InitLine(i.Color,i.name,i.list);
+ QScatterSeries* sc1 = InitOutSeries(i.list);
+ QScatterSeries* sc2 = InitInSeries(i.Color,i.list);
+ SeriesList.push_back(lineSeries);
+ SeriesList.push_back(sc1);
+ SeriesList.push_back(sc2);
+ }
+
+ //生成图表
+ Chart* chart = new Chart();
+ chart->Set(_cPar);
+ chart->Set(_aPar);
+ chart->InitChart();
+ chart->InitAxis();
+
+ for(auto &j : SeriesList)
+ {
+ chart->addSeries(j);
+ chart->setAxisX(chart->axisX(),j);
+ chart->setAxisY(chart->axisY(),j);
+ }
+ chart->InitLegend();
+
+ //生成View
+ QChartView *chartView = new QChartView(chart);
+ chartView->setRenderHint(QPainter::Antialiasing);
+
+ mLayout->addWidget(chartView);
+ this->setLayout(mLayout);
+}
+
+QList ChartLine::GetLPar(LParListModel index)
+{
+ QList _valueList;
+ switch(index)
+ {
+ case LPRODUCTIONSUMVALUE1:
+ {
+ QList valueList;
+ QList point;
+ point << QPointF(0,20) << QPointF(1,80) << QPointF(2,35) << QPointF(3,82) << QPointF(4,85) << QPointF(5,18) << QPointF(6,22) << QPointF(7,16);
+ QList point1;
+ point1 << QPointF(0,15) << QPointF(1,60) << QPointF(2,63) << QPointF(3,78) << QPointF(4,85) << QPointF(5,70) << QPointF(6,18) << QPointF(7,36);
+ QList point2;
+ point2 << QPointF(0,18) << QPointF(1,22) << QPointF(2,32) << QPointF(3,83) << QPointF(4,56) << QPointF(5,10) << QPointF(6,37) << QPointF(7,35);
+ valueList.push_back(LinePar{QColor(255,200,0),"",point});
+ valueList.push_back(LinePar{QColor(1,177,181),"",point1});
+ valueList.push_back(LinePar{QColor(7,106,182),"",point2});
+ _valueList = valueList;
+ break;
+ }
+ case LPRODUCTIONSUMVALUE2:
+ {
+ QList valueList;
+ QList point3;
+ point3 << QPointF(0,20) << QPointF(1,80) << QPointF(2,35) << QPointF(3,82) << QPointF(4,85) << QPointF(5,18) << QPointF(6,22) << QPointF(7,16);
+ QList point4;
+ point4 << QPointF(0,15) << QPointF(1,60) << QPointF(2,63) << QPointF(3,78) << QPointF(4,85) << QPointF(5,70) << QPointF(6,18) << QPointF(7,36);
+ QList point5;
+ point5 << QPointF(0,18) << QPointF(1,22) << QPointF(2,32) << QPointF(3,83) << QPointF(4,56) << QPointF(5,10) << QPointF(6,37) << QPointF(7,35);
+ valueList.push_back(LinePar{QColor(255,200,0),"",point3});
+ valueList.push_back(LinePar{QColor(1,177,181),"",point4});
+ valueList.push_back(LinePar{QColor(7,106,182),"",point5});
+ _valueList = valueList;
+ break;
+ }
+ case LLOADDISTRIBUTIONVALUE1:
+ {
+ QList valueList;
+ QList point1 = QList() << QPointF(1,20) << QPointF(2,50) << QPointF(3,100) << QPointF(4,180) << QPointF(5,85) << QPointF(6,18) << QPointF(7,60);
+ QList point2 = QList() << QPointF(1,25) << QPointF(2,70) << QPointF(3,60) << QPointF(4,160) << QPointF(5,85) << QPointF(6,70) << QPointF(7,18);
+ QList point3 = QList() << QPointF(1,40) << QPointF(2,10) << QPointF(3,120) << QPointF(4,150) << QPointF(5,56) << QPointF(6,30) << QPointF(7,55);
+ QList point4 = QList() << QPointF(1,60) << QPointF(2,150) << QPointF(3,125) << QPointF(4,165) << QPointF(5,85) << QPointF(6,60) << QPointF(7,120);
+ QList point5 = QList() << QPointF(1,30) << QPointF(2,80) << QPointF(3,20) << QPointF(4,175) << QPointF(5,85) << QPointF(6,110) << QPointF(7,40);
+ QList point6 = QList() << QPointF(1,75) << QPointF(2,50) << QPointF(3,10) << QPointF(4,100) << QPointF(5,180) << QPointF(6,50) << QPointF(7,80);
+ valueList.push_back(LinePar{QColor(0,181,183),"",point1});
+ valueList.push_back(LinePar{QColor(254,190,0),"",point2});
+ valueList.push_back(LinePar{QColor(0,112,191),"",point3});
+ valueList.push_back(LinePar{QColor(71,100,147),"",point4});
+ valueList.push_back(LinePar{QColor(214,77,84),"",point5});
+ valueList.push_back(LinePar{QColor(0,174,123),"",point6});
+ _valueList = valueList;
+ break;
+ }
+ case LPASSEDTHEINSPECTIONVALUE1:
+ {
+ QList valueList;
+ QList point1 = QList() << QPointF(1,87) << QPointF(2,30) << QPointF(3,32) << QPointF(4,31) << QPointF(5,33)
+ << QPointF(6,36) << QPointF(7,37) << QPointF(8,30) << QPointF(9,80) << QPointF(10,75);
+ valueList.push_back(LinePar{QColor(0,181,183),"",point1});
+ _valueList = valueList;
+ break;
+ }
+ case LPASSEDTHEINSPECTIONVALUE2:
+ {
+ QList valueList;
+ QList point1 = QList() << QPointF(1,73) << QPointF(2,32) << QPointF(3,33) << QPointF(4,31) << QPointF(5,32)
+ << QPointF(6,60) << QPointF(7,76) << QPointF(8,80) << QPointF(9,35) << QPointF(10,43);
+ valueList.push_back(LinePar{QColor(0,181,183),"",point1});
+ _valueList = valueList;
+ break;
+ }
+ case LQUALITYMANAGEMENTVALUE1:
+ {
+ QList valueList;
+ QList point1 = QList();
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int i = 0; i < 31; i++)
+ {
+ point1.append(QPointF(i + 1,qrand() % 100));
+ }
+ valueList.push_back(LinePar{QColor(0,181,183),"",point1});
+ _valueList = valueList;
+ break;
+ }
+ case LCHARTLINEVALUE:
+ {
+ QList valueList;
+ QList point1;
+ QList point2;
+ QList point3;
+ QList point4;
+ QList point5;
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ for(int i = 0; i < 12; i++)
+ {
+ point1.append(QPointF(i,qrand() % 120));
+ }
+ for(int i = 0; i < 12; i++)
+ {
+ point2.append(QPointF(i,qrand() % 120));
+ }
+ for(int i = 0; i < 12; i++)
+ {
+ point3.append(QPointF(i,qrand() % 120));
+ }
+ for(int i = 0; i < 12; i++)
+ {
+ point4.append(QPointF(i,qrand() % 120));
+ }
+ for(int i = 0; i < 12; i++)
+ {
+ point5.append(QPointF(i,qrand() % 120));
+ }
+ valueList.push_back(LinePar{QColor(47,166,242),"",point1});
+ valueList.push_back(LinePar{QColor(51,215,218),"",point2});
+ valueList.push_back(LinePar{QColor(222,129,50),"",point3});
+ valueList.push_back(LinePar{QColor(74,100,151),"",point4});
+ valueList.push_back(LinePar{QColor(188,92,88),"",point5});
+ _valueList = valueList;
+ break;
+ }
+ }
+ return _valueList;
+}
+
+QLineSeries *ChartLine::InitLine(QColor Color, QString name, QList list)
+{
+ QFont font;
+ font.setItalic(!font.italic());
+ font.setPointSizeF(12);
+ font.setFamily("微软雅黑");
+
+ QLineSeries* lineSeries = new QLineSeries();
+ //添加数据
+ lineSeries->append(list);
+ //设置线段的名称
+ lineSeries->setName(name);
+ //设置线段的颜色
+ lineSeries->setColor(QColor());
+ //设置线段是否可视话
+ lineSeries->setVisible(true);
+ //点标签文字是否可见
+ lineSeries->setPointLabelsVisible(false);
+ //点标签字体
+ lineSeries->setPointLabelsFont(font);
+ //点标签格式
+ lineSeries->setPointLabelsFormat("@xPoint,@yPoint");
+ //是否切割边缘点标签,默认为true
+ lineSeries->setPointLabelsClipping(true);
+ //设置点是否可视
+ lineSeries->setPointsVisible(true);
+ //设置笔
+ lineSeries->setPen(QPen(QBrush(Color),2));
+ //使用opengl渲染
+ lineSeries->setUseOpenGL(true);
+
+ //离散点
+ QScatterSeries *series1 = new QScatterSeries();
+ //圆形的点
+ series1->setMarkerShape(QScatterSeries::MarkerShapeCircle);
+ //离散点边框颜色
+ series1->setBorderColor(QColor(21, 100, 255));
+ //离散点背景色
+ series1->setBrush(QBrush(QColor(21, 100, 255)));
+ //离散点大小
+ series1->setMarkerSize(12);
+ //添加数据
+ series1->append(list);
+
+ return lineSeries;
+}
+
+QScatterSeries *ChartLine::InitOutSeries(QList list)
+{
+ QScatterSeries *series1 = new QScatterSeries();
+ series1->setMarkerShape(QScatterSeries::MarkerShapeCircle);//圆形的点
+ series1->setBorderColor(QColor(255, 255, 255)); //边框颜色
+ series1->setBrush(QBrush(QColor(255, 255, 255)));//背景颜色
+ series1->setMarkerSize(12);
+ series1->append(list);
+ series1->setUseOpenGL(true);
+
+ return series1;
+}
+
+QScatterSeries *ChartLine::InitInSeries(QColor color,QList list)
+{
+ QScatterSeries *series1 = new QScatterSeries();
+ series1->setMarkerShape(QScatterSeries::MarkerShapeCircle);//圆形的点
+ series1->setBorderColor(color); //边框颜色
+ series1->setBrush(QBrush(color));//背景颜色
+ series1->setMarkerSize(6);
+ series1->append(list);
+ series1->setUseOpenGL(true);
+
+ return series1;
+}
+
diff --git a/Src/Chart/ChartLine.h b/Src/Chart/ChartLine.h
new file mode 100644
index 0000000..e5d7b5a
--- /dev/null
+++ b/Src/Chart/ChartLine.h
@@ -0,0 +1,50 @@
+#ifndef _CHART_LINE_H_
+#define _CHART_LINE_H_
+
+#include "ChartBaseSeries.h"
+
+#include //显示图表
+#include
+#include
+#include
+#include
+
+#include "Chart.h"
+
+QT_CHARTS_USE_NAMESPACE//QtChart名空间
+
+enum LParListModel
+{
+ LPRODUCTIONSUMVALUE1,
+ LPRODUCTIONSUMVALUE2,
+ LLOADDISTRIBUTIONVALUE1,
+ LPASSEDTHEINSPECTIONVALUE1,
+ LPASSEDTHEINSPECTIONVALUE2,
+ LQUALITYMANAGEMENTVALUE1,
+ LCHARTLINEVALUE,
+};
+
+struct LinePar
+{
+ QColor Color;
+ QString name;
+ QList list;
+};
+
+class ChartLine : public ChartBaseSeries
+{
+ Q_OBJECT
+public:
+ ChartLine(QWidget* parent = nullptr);
+ ~ChartLine();
+
+ void Init(QList);
+ QList GetLPar(LParListModel);
+private:
+ QLineSeries* InitLine(QColor Color,QString name,QList list);
+ QScatterSeries* InitInSeries(QColor,QList list);
+ QScatterSeries* InitOutSeries(QList list);
+};
+
+
+#endif //_CHART_LINE_H_
diff --git a/Src/Chart/ChartPie.cpp b/Src/Chart/ChartPie.cpp
new file mode 100644
index 0000000..feb5163
--- /dev/null
+++ b/Src/Chart/ChartPie.cpp
@@ -0,0 +1,86 @@
+#include "ChartPie.h"
+#include "Chart.h"
+#include
+#include
+#include
+#include
+
+ChartPie::ChartPie(QWidget *parent)
+ :ChartBaseSeries (parent)
+{
+
+}
+
+ChartPie::~ChartPie()
+{
+
+}
+
+void ChartPie::Init(QList colorList,QStringList nameList,QList valueList,int total)
+{
+ if(colorList.size() != nameList.size() || colorList.size() != valueList.size() )
+ return;
+ _total = total;
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+
+ QPieSeries* pieSeries = new QPieSeries();
+ //孔大小
+ pieSeries->setHoleSize(0.0);
+ //水平位置
+ pieSeries->setHorizontalPosition(0.5);
+ //设置文字位置
+// pieSeries->setLabelsPosition(QPieSlice::LabelInsideTangential);
+ //设置文字是否可视化
+// pieSeries->setLabelsVisible(true);
+ //饼图尺寸
+ pieSeries->setPieSize(0.7);
+ //设置12方向是几度
+ pieSeries->setPieStartAngle(0);
+ pieSeries->setVerticalPosition(0.5);
+ pieSeries->setVisible(true);
+ pieSeries->setUseOpenGL(true);
+
+ for(int i = 0; i < colorList.size(); i++)
+ {
+ CreatePieSlice(pieSeries,colorList.at(i),nameList.at(i),valueList.at(i),i);
+ }
+// CreatePieSlice(pieSeries,QColor(90,180,180),"bcc",30,1);
+// CreatePieSlice(pieSeries,QColor(150,180,180),"ccc",30,2);
+// CreatePieSlice(pieSeries,QColor(210,180,180),"dcc",10,3);
+
+ QChart* chart = new QChart();
+ //设置系统主题
+ chart->setTheme(QChart::ChartThemeBlueCerulean);
+ //是否启用动画
+ chart->setAnimationOptions(QChart::AllAnimations);
+ chart->layout()->setContentsMargins(0, 0, 0, 0);//设置外边界全部为0
+ chart->setMargins(QMargins(0, 0, 0, 0));//设置内边界全部为0
+ chart->setBackgroundRoundness(0);//设置背景区域无圆角
+// chart->InitChart();
+// chart->InitLegend();
+// chart->InitAxis();
+ chart->addSeries(pieSeries);
+
+ QChartView* view = new QChartView(chart);
+ mLayout->addWidget(view);
+ this->setLayout(mLayout);
+}
+
+void ChartPie::CreatePieSlice(QPieSeries* pieSeries,QColor color,QString name,int value,int index, bool isExploded)
+{
+ pieSeries->append(name,value);
+ QPieSlice* slice = pieSeries->slices().at(index);
+ slice->setExploded(isExploded);
+ slice->setLabelColor(color);
+ slice->setColor(color);
+// qDebug() <value() / _total * 100);
+// qDebug() << fValue;
+ QString sValue = QString::number(fValue,'f',2);
+ slice->setLabelPosition(QPieSlice::LabelOutside);
+ slice->setLabel(slice->label() + " - "+ sValue + "%");
+ slice->setLabelFont(QFont("微软雅黑"));
+ slice->setLabelVisible(true);
+}
diff --git a/Src/Chart/ChartPie.h b/Src/Chart/ChartPie.h
new file mode 100644
index 0000000..85ede4f
--- /dev/null
+++ b/Src/Chart/ChartPie.h
@@ -0,0 +1,25 @@
+#ifndef _CHART_PIE_H_
+#define _CHART_PIE_H_
+
+#include "ChartBaseSeries.h"
+#include "QWidget"
+#include
+#include
+
+QT_CHARTS_USE_NAMESPACE //QtChart名空间
+
+class ChartPie : public ChartBaseSeries
+{
+ Q_OBJECT
+public:
+ ChartPie(QWidget* parent = nullptr);
+ ~ChartPie();
+
+ void Init(QList,QStringList,QList,int total);
+private:
+ void CreatePieSlice(QPieSeries*,QColor color,QString name,int value,int index,bool isExploded = false);
+private:
+ int _total = 0;
+};
+
+#endif //_CHART_PIE_H_
diff --git a/Src/Control/ControlDashBoard.cpp b/Src/Control/ControlDashBoard.cpp
new file mode 100644
index 0000000..c9f8aa2
--- /dev/null
+++ b/Src/Control/ControlDashBoard.cpp
@@ -0,0 +1,29 @@
+#include "ControlDashBoard.h"
+#include
+
+ControlDashBoard::ControlDashBoard(QWidget *parent)
+ :QWidget (parent)
+{
+
+}
+
+ControlDashBoard::~ControlDashBoard()
+{
+
+}
+
+void ControlDashBoard::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+ DrawBackGround(&painter);
+}
+
+void ControlDashBoard::DrawBackGround(QPainter* painter)
+{
+ painter->save();
+
+
+
+
+ painter->restore();
+}
diff --git a/Src/Control/ControlDashBoard.h b/Src/Control/ControlDashBoard.h
new file mode 100644
index 0000000..21e5a4b
--- /dev/null
+++ b/Src/Control/ControlDashBoard.h
@@ -0,0 +1,19 @@
+#ifndef _CONTROL_DASH_BOARD_H_
+#define _CONTROL_DASH_BOARD_H_
+
+#include
+
+class ControlDashBoard : public QWidget
+{
+ Q_OBJECT
+public:
+ ControlDashBoard(QWidget* parent = nullptr);
+ ~ControlDashBoard();
+protected:
+ void paintEvent(QPaintEvent *event);
+private:
+ void DrawBackGround(QPainter*);
+
+};
+
+#endif //_CONTROL_DASH_BOARD_H_
diff --git a/Src/Control/ControlRoundProBar.cpp b/Src/Control/ControlRoundProBar.cpp
new file mode 100644
index 0000000..817e57b
--- /dev/null
+++ b/Src/Control/ControlRoundProBar.cpp
@@ -0,0 +1,114 @@
+#include "ControlRoundProBar.h"
+#include
+#include
+#include
+#include
+#include
+
+ContorlRoundProBar::ContorlRoundProBar(QWidget* parent)
+ :QWidget(parent)
+{
+ QTimer* mTimer = new QTimer(this);
+ mTimer->setInterval(2000);
+ this->connect(mTimer,&QTimer::timeout,this,[=](){
+ int Angle = qrand() % 100;
+ proportion = (double)Angle / 100.0;
+ ChangeValue();
+ });
+ mTimer->start();
+}
+
+void ContorlRoundProBar::ChangeValue()
+{
+ QPropertyAnimation *pAnimation = new QPropertyAnimation(this, "oldproprortion");
+ pAnimation->setDuration(1000);
+ pAnimation->setStartValue(oldproprortion);
+ pAnimation->setEndValue(proportion);
+ pAnimation->start(QAbstractAnimation::DeleteWhenStopped);
+// qDebug() << oldproprortion;
+ str = QString::number(proportion * 100) + "%";
+
+ update();
+}
+
+void ContorlRoundProBar::SetOldproprortion(double d)
+{
+ oldproprortion = d;
+ repaint();
+}
+
+double ContorlRoundProBar::GetOldproprortion()
+{
+ return oldproprortion;
+}
+
+ContorlRoundProBar::~ContorlRoundProBar()
+{
+
+}
+
+void ContorlRoundProBar::paintEvent(QPaintEvent *event)
+{
+ QPainter painter(this);
+ painter.setRenderHint(QPainter::Antialiasing);
+
+ DrawOotRound(&painter);
+ DrawInRound(&painter);
+ DrawOutRound1(&painter);
+ DrawText(&painter);
+}
+
+void ContorlRoundProBar::DrawOotRound(QPainter* painter)
+{
+ painter->save();
+ QPen pen;
+ pen.setWidth(18);
+ pen.setColor(QColor(233,248,248));
+ painter->setPen(pen);
+ painter->setBrush(Qt::NoBrush);
+ painter->drawEllipse(QRect(28,28,this->width() - 56,this->height() - 56));
+
+ painter->restore();
+}
+
+void ContorlRoundProBar::DrawInRound(QPainter* painter)
+{
+ painter->save();
+ QPen pen;
+ pen.setWidth(18);
+ pen.setStyle(Qt::SolidLine);
+ pen.setCapStyle(Qt::RoundCap);
+ pen.setJoinStyle(Qt::RoundJoin);
+ pen.setColor(QColor(49, 177, 190));
+ painter->setPen(pen);
+
+ QRectF rectangle(28,28,this->width() - 56,this->height() - 56);
+ //从90度开始,逆时针旋转
+ int startAngle = 90 * 16;
+ int spanAngle = oldproprortion * 360 * 16 * -1;
+ painter->drawArc(rectangle,startAngle,spanAngle);
+
+ painter->restore();
+}
+
+void ContorlRoundProBar::DrawOutRound1(QPainter* painter)
+{
+ //当bar宽度小于3时,便不再绘制装饰圆点
+ painter->setPen(QColor(255,255,255));
+ painter->setBrush(QColor(255,255,255));
+ //区域为圆点绘制正方形区域
+ painter->drawEllipse((28 + (this->width() - 56)) / 2 + 6,28 - 3,6,6);
+}
+
+void ContorlRoundProBar::DrawText(QPainter* painter)
+{
+ painter->save();
+ //设置画笔
+ painter->setPen(QPen(QColor(220,220,220),12));
+ //设置字体
+ painter->setFont(QFont("黑体",30));
+ //画文字
+ QPointF point(this->width() / 2 - 30, this->height() / 2 + 15);
+ painter->drawText(point,str);
+ painter->restore();
+}
diff --git a/Src/Control/ControlRoundProBar.h b/Src/Control/ControlRoundProBar.h
new file mode 100644
index 0000000..65d73ea
--- /dev/null
+++ b/Src/Control/ControlRoundProBar.h
@@ -0,0 +1,33 @@
+#ifndef _CONTROL_ROUND_PRO_BAR_H_
+#define _CONTROL_ROUND_PRO_BAR_H_
+
+#include
+
+class ContorlRoundProBar : public QWidget
+{
+ Q_OBJECT
+public:
+ ContorlRoundProBar(QWidget* parent = nullptr);
+ ~ContorlRoundProBar();
+
+ Q_PROPERTY( double oldproprortion READ GetOldproprortion WRITE SetOldproprortion);
+ void ChangeValue();
+
+ void SetOldproprortion(double d);
+ double GetOldproprortion();
+private:
+ void paintEvent(QPaintEvent *event);
+
+ void DrawOotRound(QPainter*);
+ void DrawInRound(QPainter*);
+ void DrawOutRound1(QPainter*);
+ void DrawText(QPainter*);
+
+private:
+ double oldproprortion = 0.0;
+ double proportion = 0.0;
+ QString str = "";
+};
+
+
+#endif //_CONTROL_ROUND_PRO_BAR_H_
diff --git a/Src/Gui/BaseWidget.cpp b/Src/Gui/BaseWidget.cpp
new file mode 100644
index 0000000..2e2ab41
--- /dev/null
+++ b/Src/Gui/BaseWidget.cpp
@@ -0,0 +1,82 @@
+#include "BaseWidget.h"
+#include
+#include
+#include
+
+
+BaseWidget::BaseWidget(QWidget *parent)
+ :QWidget (parent)
+{
+
+}
+
+BaseWidget::~BaseWidget()
+{
+
+}
+
+QPushButton *BaseWidget::InitButton(QString name, int width, int height, QString style)
+{
+ QPushButton* btn = new QPushButton();
+ btn->setText(name);
+ if(width != 0)
+ btn->setFixedWidth(width);
+ if(height)
+ btn->setFixedHeight(height);
+ btn->setStyleSheet(style);
+
+ return btn;
+}
+
+QPushButton *BaseWidget::InitButton(QString name, int width, int height, QString icon, int iconWidth, int iconHeight, QString style)
+{
+ QPushButton* btn = new QPushButton();
+ btn->setText(name);
+ if(width != 0)
+ btn->setFixedWidth(width);
+ if(height)
+ btn->setFixedHeight(height);
+ btn->setIcon(QIcon(icon));
+ btn->setIconSize(QSize(iconWidth,iconHeight));
+ btn->setStyleSheet(style);
+
+ return btn;
+}
+
+QLabel *BaseWidget::InitLabel(QString name, int width, int height, LabelPos pos, QString style)
+{
+ QLabel* lbl = new QLabel();
+ lbl->setText(name);
+ if(width != 0)
+ lbl->setFixedWidth(width);
+ else if(height != 0)
+ lbl->setFixedHeight(height);
+ if(pos == POSLEFT)
+ lbl->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
+ else if(pos == POSCENTER)
+ lbl->setAlignment(Qt::AlignCenter);
+ else if(pos == POSRIGHT)
+ lbl->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
+ lbl->setStyleSheet(style);
+
+ return lbl;
+}
+
+QHBoxLayout *BaseWidget::InitHLayout(int spcaeing, int left, int top, int right, int bottom)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(spcaeing);
+ mLayout->setContentsMargins(left,top,right,bottom);
+
+ return mLayout;
+
+}
+
+QVBoxLayout *BaseWidget::InitVLayout(int spaceing, int left, int top, int right, int bottom)
+{
+ QVBoxLayout* mLayout = new QVBoxLayout();
+ mLayout->setSpacing(spaceing);
+ mLayout->setContentsMargins(left,top,right,bottom);
+
+ return mLayout;
+}
diff --git a/Src/Gui/BaseWidget.h b/Src/Gui/BaseWidget.h
new file mode 100644
index 0000000..5b99121
--- /dev/null
+++ b/Src/Gui/BaseWidget.h
@@ -0,0 +1,41 @@
+#ifndef _BASE_WIDGET_H_
+#define _BASE_WIDGET_H_
+
+#include
+
+class QHBoxLayout;
+class QVBoxLayout;
+class QPushButton;
+class QLabel;
+
+
+class BaseWidget : public QWidget
+{
+ Q_OBJECT
+protected:
+ enum LabelPos
+ {
+ POSLEFT,
+ POSCENTER,
+ POSRIGHT,
+ };
+public:
+ BaseWidget(QWidget* parent = nullptr);
+ ~BaseWidget();
+
+protected:
+ //名字 长 宽 样式表
+ QPushButton* InitButton(QString name,int width,int height,QString style = "");
+ //名字 长 宽 图标 图标大小 样式表
+ QPushButton* InitButton(QString name,int width,int height,QString icon,int iconWidth,int iconHeight,QString style = "");
+ //名字 长 宽 位置 (1左 2中 3右) 样式表
+ QLabel* InitLabel(QString name,int width,int height,LabelPos pos,QString style = "");
+ //间隔 左 上 右 下
+ QHBoxLayout* InitHLayout(int spcaeing = 0,int left = 0,int top = 0,int right = 0,int bottom = 0);
+ //间隔 左 上 右 下
+ QVBoxLayout* InitVLayout(int spaceing = 0,int left = 0,int top = 0,int right = 0,int bottom = 0);
+
+};
+
+
+#endif //_BASE_WIDGET_H_
diff --git a/Src/Gui/DockWidget.cpp b/Src/Gui/DockWidget.cpp
new file mode 100644
index 0000000..2d747fb
--- /dev/null
+++ b/Src/Gui/DockWidget.cpp
@@ -0,0 +1,153 @@
+#include "DockWidget.h"
+#include
+#include
+
+DockWidgetTitle::DockWidgetTitle(QLabel *lbl,QWidget *parent)
+ :QWidget (parent)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+ mLayout->addWidget(lbl);
+ this->setLayout(mLayout);
+}
+
+DockWidgetTitle::DockWidgetTitle(QString text, QWidget *parent)
+{
+ QHBoxLayout* mLayout = new QHBoxLayout();
+ mLayout->setSpacing(0);
+ mLayout->setContentsMargins(0,0,0,0);
+
+ QLabel* lbl = new QLabel();
+ lbl->setAlignment(Qt::AlignCenter);
+ lbl->setStyleSheet("background-color:rgb(41,43,77);"
+ "font : ""楷体"" 15pt;"
+ "color:rgb(240,240,240);");
+ lbl->setText(text);
+ lbl->setFixedHeight(30);
+ mLayout->addWidget(lbl);
+ this->setLayout(mLayout);
+}
+
+DockWidgetTitle::~DockWidgetTitle()
+{
+
+}
+
+void DockWidgetTitle::mouseMoveEvent(QMouseEvent *event)
+{
+ QWidget::mouseMoveEvent(event);
+}
+
+void DockWidgetTitle::mousePressEvent(QMouseEvent *event)
+{
+ QWidget::mousePressEvent(event);
+}
+
+void DockWidgetTitle::mouseReleaseEvent(QMouseEvent *event)
+{
+ QWidget::mouseReleaseEvent(event);
+}
+
+DockWidget::DockWidget(QString text, QWidget *parent)
+ :QDockWidget (parent)
+{
+ DockWidgetTitle* mTitle = new DockWidgetTitle(text);
+ this->setTitleBarWidget(mTitle);
+
+ DockWidgetList::Get()->Push(this);
+}
+
+DockWidget::DockWidget(QLabel *lbl, QWidget *parent)
+ :QDockWidget (parent)
+{
+ DockWidgetTitle* mTitle = new DockWidgetTitle(lbl);
+ this->setTitleBarWidget(mTitle);
+
+ DockWidgetList::Get()->Push(this);
+}
+
+DockWidget::~DockWidget()
+{
+
+}
+
+void DockWidget::SetDockWidget(QWidget *widget)
+{
+ this->setWidget(widget);
+}
+
+DockWidgetList *DockWidgetList::Get()
+{
+ static DockWidgetList cx;
+ return &cx;
+}
+
+void DockWidgetList::Push(DockWidget *wid)
+{
+ _list.push_back(wid);
+}
+
+void DockWidgetList::DeleteAll()
+{
+ for(auto & i : _list)
+ {
+ i->deleteLater();
+ i = nullptr;
+ }
+}
+
+void DockWidgetList::HideAll()
+{
+ for(auto & i : _list)
+ {
+ i->hide();
+ }
+}
+
+void DockWidgetList::HideIndex(int index)
+{
+ if(index > _list.size() - 1)
+ {
+ return;
+ }
+ _list.at(index)->hide();
+}
+
+void DockWidgetList::ShowAll()
+{
+ for(auto &i : _list)
+ {
+ i->show();
+ }
+}
+
+void DockWidgetList::ShowIndex(int index)
+{
+ if(index > _list.size() - 1)
+ {
+ return;
+ }
+ _list.at(index)->show();
+}
+
+DockWidget *DockWidgetList::GetDockWidgetIndex(int index)
+{
+ DockWidget* dock = new DockWidget("11");
+ if(index >= _list.size())
+ return dock;
+ DockWidget* widget = _list.at(index);
+ ShowIndex(index);
+ return widget;
+}
+
+DockWidgetList::DockWidgetList(QObject *obj)
+ :QObject (obj)
+{
+
+}
+
+DockWidgetList::~DockWidgetList()
+{
+
+}
diff --git a/Src/Gui/DockWidget.h b/Src/Gui/DockWidget.h
new file mode 100644
index 0000000..50c10d3
--- /dev/null
+++ b/Src/Gui/DockWidget.h
@@ -0,0 +1,59 @@
+#ifndef _DOCK_WIDGET_H_
+#define _DOCK_WIDGET_H_
+
+#include
+#include
+
+class DockWidgetTitle : public QWidget
+{
+ Q_OBJECT
+public:
+ DockWidgetTitle(QLabel* lbl = nullptr,QWidget* parent = nullptr);
+ DockWidgetTitle(QString text = "",QWidget* parent = nullptr);
+ ~DockWidgetTitle();
+
+protected:
+ void mouseMoveEvent(QMouseEvent* e);
+ void mousePressEvent(QMouseEvent* e);
+ void mouseReleaseEvent(QMouseEvent* e);
+private:
+};
+
+class DockWidget : public QDockWidget
+{
+ Q_OBJECT
+public:
+ DockWidget(QString text = "",QWidget* parent = nullptr);
+ DockWidget(QLabel* lbl = nullptr,QWidget* parent = nullptr);
+ ~DockWidget();
+
+ void SetDockWidget(QWidget* widget);
+// void Remove();
+};
+
+class DockWidgetList : public QObject
+{
+ Q_OBJECT
+public:
+ static DockWidgetList* Get();
+
+ void Push(DockWidget*);
+
+ void DeleteAll();
+ void HideAll();
+ void HideIndex(int index);
+
+ void ShowAll();
+ void ShowIndex(int index);
+
+ DockWidget* GetDockWidgetIndex(int);
+private:
+ QList _list;
+private:
+ DockWidgetList(QObject* obj = nullptr);
+ ~DockWidgetList();
+};
+
+
+
+#endif //_DOCK_WIDGET_H_
diff --git a/Src/Gui/MainWindow.cpp b/Src/Gui/MainWindow.cpp
new file mode 100644
index 0000000..6f6f99b
--- /dev/null
+++ b/Src/Gui/MainWindow.cpp
@@ -0,0 +1,280 @@
+#include "MainWindow.h"
+#include
+#include "ModuleWidget.h"
+#include
+#include
+
+#include "DockWidget.h"
+#include
+#include
+#include
+
+MainWindow::MainWindow(QWidget *parent)
+ : QMainWindow(parent)
+{
+// QWidget* mWidget = new QWidget();
+// QHBoxLayout* mLayout = new QHBoxLayout();
+// mLayout->setSpacing(0);
+// mLayout->setContentsMargins(0,0,0,0);
+
+
+// mWidget->setLayout(mLayout);
+
+// this->setCentralWidget(mWidget);
+
+ this->setObjectName("MainWindow");
+ this->setStyleSheet("#MainWindow{background-color:rgb(12,15,46);}");
+ InitWidget();
+ InitMenu();
+}
+
+MainWindow::~MainWindow()
+{
+
+}
+
+void MainWindow::contextMenuEvent(QContextMenuEvent *event)
+{
+ _menu->exec(QCursor::pos());
+ event->accept();
+}
+
+void MainWindow::InitWidget()
+{
+ ModuleWidget* productionSumWidget = new ModuleWidget(PRODUCTIONSUM);
+ ModuleWidget* planForTheMonthWidget = new ModuleWidget(PLANFORTHEMONTH);
+ ModuleWidget* deviceMonitorRingWidget = new ModuleWidget(DEVICEMONITORING);
+ ModuleWidget* MdloProgressWidget = new ModuleWidget(MOLDPROGRESS);
+ ModuleWidget* LoadDistributionWidget = new ModuleWidget(LOADDISTRIBUTION);
+ ModuleWidget* PassedTheInSpectionWidget = new ModuleWidget(PASSEDTHEINSPECTION);
+ ModuleWidget* QualityManagementWidget = new ModuleWidget(QUALITYMANAGEMENT);
+ ModuleWidget* MaterialManagementWidget = new ModuleWidget(MATERIALMANAGEMENT);
+ ModuleWidget* VideoSurveillance = new ModuleWidget(VIDEOSURVEILLANCE);
+
+ DockWidget* dockWidget1 = new DockWidget("随便吧");
+ dockWidget1->SetDockWidget(productionSumWidget);
+ dockWidget1->setObjectName("dockWidget1");
+
+ DockWidget* dockWidget2 = new DockWidget("随便了");
+ dockWidget2->SetDockWidget(planForTheMonthWidget);
+ dockWidget2->setObjectName("dockWidget2");
+
+ DockWidget* dockWidget3 = new DockWidget("随便吧");
+ dockWidget3->SetDockWidget(deviceMonitorRingWidget);
+ dockWidget3->setObjectName("dockWidget3");
+
+ DockWidget* dockWidget4 = new DockWidget("随便了");
+ dockWidget4->SetDockWidget(MdloProgressWidget);
+ dockWidget4->setObjectName("dockWidget4");
+
+ DockWidget* dockWidget5 = new DockWidget("随便吧");
+ dockWidget5->SetDockWidget(LoadDistributionWidget);
+ dockWidget5->setObjectName("dockWidget5");
+
+ DockWidget* dockWidget6 = new DockWidget("随便了");
+ dockWidget6->SetDockWidget(PassedTheInSpectionWidget);
+ dockWidget6->setObjectName("dockWidget6");
+
+ DockWidget* dockWidget7 = new DockWidget("随便吧");
+ dockWidget7->SetDockWidget(QualityManagementWidget);
+ dockWidget7->setObjectName("dockWidget7");
+
+ DockWidget* dockWidget8 = new DockWidget("随便了");
+ dockWidget8->SetDockWidget(MaterialManagementWidget);
+ dockWidget8->setObjectName("dockWidget8");
+
+ DockWidget* dockWidget9 = new DockWidget("随便了");
+ dockWidget9->SetDockWidget(VideoSurveillance);
+ dockWidget9->setObjectName("dockWidget9");
+
+ this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget1);
+ this->splitDockWidget(dockWidget1,dockWidget2,Qt::Horizontal);
+ this->splitDockWidget(dockWidget2,dockWidget3,Qt::Horizontal);
+ this->splitDockWidget(dockWidget1,dockWidget4,Qt::Vertical);
+ this->splitDockWidget(dockWidget2,dockWidget5,Qt::Vertical);
+ this->splitDockWidget(dockWidget3,dockWidget6,Qt::Vertical);
+
+}
+
+void MainWindow::InitMenu()
+{
+ _menu = new QMenu();
+ QAction* actionStyle = new QAction("样式");
+ QAction* actionSaveLayout = new QAction("保存布局");
+ QAction* actionLoadLayout = new QAction("使用布局");
+
+ QMenu* StyleMenu = new QMenu();
+ QAction* actionStyle1 = new QAction("样式1");
+ QAction* actionStyle2 = new QAction("样式2");
+ QAction* actionStyle3 = new QAction("样式3");
+ QAction* actionStyle4 = new QAction("样式4");
+ QAction* actionStyle5 = new QAction("样式5");
+ QAction* actionStyle6 = new QAction("样式6");
+ QAction* actionStyle7 = new QAction("样式7");
+ StyleMenu->addAction(actionStyle1);
+ StyleMenu->addAction(actionStyle2);
+ StyleMenu->addAction(actionStyle3);
+ StyleMenu->addAction(actionStyle4);
+ StyleMenu->addAction(actionStyle5);
+ StyleMenu->addAction(actionStyle6);
+ StyleMenu->addAction(actionStyle7);
+ actionStyle->setMenu(StyleMenu);
+
+ _menu->addAction(actionStyle);
+ _menu->addAction(actionSaveLayout);
+ _menu->addAction(actionLoadLayout);
+
+ this->connect(actionStyle1,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(1),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
+ });
+ this->connect(actionStyle2,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(1));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(6),DockWidgetList::Get()->GetDockWidgetIndex(8),Qt::Vertical);
+ });
+ this->connect(actionStyle3,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(5),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
+ });
+ this->connect(actionStyle4,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(4),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
+ });
+ this->connect(actionStyle5,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
+ });
+ this->connect(actionStyle6,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(1),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(2),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(1),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(2),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
+ });
+ this->connect(actionStyle7,&QAction::triggered,this,[=](){
+ DockWidgetList::Get()->HideAll();
+ this->addDockWidget(Qt::LeftDockWidgetArea,DockWidgetList::Get()->GetDockWidgetIndex(0));
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(3),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(4),Qt::Horizontal);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(0),DockWidgetList::Get()->GetDockWidgetIndex(5),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(3),DockWidgetList::Get()->GetDockWidgetIndex(6),Qt::Vertical);
+ this->splitDockWidget(DockWidgetList::Get()->GetDockWidgetIndex(4),DockWidgetList::Get()->GetDockWidgetIndex(7),Qt::Vertical);
+ });
+ this->connect(actionSaveLayout,&QAction::triggered,this,[=](){
+ SaveLayout();
+ });
+ this->connect(actionLoadLayout,&QAction::triggered,this,[=](){
+ LoadLayout();
+ });
+}
+
+
+void MainWindow::SaveLayout()
+{
+ const QString fileName = QDir::currentPath() + "/Layout.txt";
+ qDebug() << fileName;
+ if (fileName.isEmpty())
+ return;
+ QFile file(fileName);
+ if (!file.open(QFile::WriteOnly)) {
+ QString msg = tr("Failed to open %1\n%2")
+ .arg(fileName)
+ .arg(file.errorString());
+ QMessageBox::warning(nullptr, tr("Error"), msg);
+ return;
+ }
+
+
+ QByteArray geo_data = saveGeometry();
+ QByteArray layout_data = saveState();
+
+
+ bool ok = file.putChar((uchar)geo_data.size());
+ if (ok)
+ ok = file.write(geo_data) == geo_data.size();
+ if (ok)
+ ok = file.write(layout_data) == layout_data.size();
+
+
+ if (!ok) {
+ QString msg = tr("Error writing to %1\n%2")
+ .arg(fileName)
+ .arg(file.errorString());
+ QMessageBox::warning(this, tr("Error"), msg);
+ return;
+ }
+}
+
+void MainWindow::LoadLayout()
+{
+// QString fileName
+// = QFileDialog::getOpenFileName(this, tr("Load layout"));
+ const QString fileName = QDir::currentPath() + "/Layout.txt";
+ if (fileName.isEmpty())
+ return;
+ QFile file(fileName);
+ if (!file.open(QFile::ReadOnly)) {
+ QString msg = tr("Failed to open %1\n%2")
+ .arg(fileName)
+ .arg(file.errorString());
+ QMessageBox::warning(this, tr("Error"), msg);
+ return;
+ }
+
+
+ uchar geo_size;
+ QByteArray geo_data;
+ QByteArray layout_data;
+
+
+ bool ok = file.getChar((char*)&geo_size);
+ if (ok) {
+ geo_data = file.read(geo_size);
+ ok = geo_data.size() == geo_size;
+ }
+ if (ok) {
+ layout_data = file.readAll();
+ ok = layout_data.size() > 0;
+ }
+
+
+ if (ok)
+ ok = restoreGeometry(geo_data);
+ if (ok)
+ ok = restoreState(layout_data);
+
+
+ if (!ok) {
+ QString msg = tr("Error reading %1")
+ .arg(fileName);
+ QMessageBox::warning(this, tr("Error"), msg);
+ return;
+ }
+}
diff --git a/Src/Gui/MainWindow.h b/Src/Gui/MainWindow.h
new file mode 100644
index 0000000..91d9ef6
--- /dev/null
+++ b/Src/Gui/MainWindow.h
@@ -0,0 +1,28 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include
+
+class QMenu;
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+
+ void contextMenuEvent(QContextMenuEvent *event);
+
+ void InitWidget();
+ void InitMenu();
+
+private:
+ void SaveLayout();
+ void LoadLayout();
+
+private:
+ QMenu* _menu;
+};
+
+#endif // MAINWINDOW_H
diff --git a/Src/Gui/ModuleWidget.cpp b/Src/Gui/ModuleWidget.cpp
new file mode 100644
index 0000000..58c3444
--- /dev/null
+++ b/Src/Gui/ModuleWidget.cpp
@@ -0,0 +1,1048 @@
+#include "ModuleWidget.h"
+#include
+#include
+
+#include
+#include "../Pub/PubCss.h"
+#include "../Chart/ChartBar.h"
+#include "../Chart/ChartLine.h"
+#include "../Chart/ChartPie.h"
+#include "../Control/ControlRoundProBar.h"
+#include "../Model/MoldProTableView.h"
+#include "../Model/LoadDistributionTableView.h"
+#include "../Model/PartsInventoryTableView.h"
+#include "../Task/OpenCVVideo.h"
+#include "OpenCVGLWidget.h"
+
+ModuleWidget::ModuleWidget(SmallWindowModel model,QWidget *parent)
+ :BaseWidget (parent)
+{
+ qRegisterMetaType("cv::Mat");
+
+ QHBoxLayout* mLayout = InitHLayout();
+ QWidget* createWidget = Init(model);
+ mLayout->addWidget(createWidget);
+ this->setLayout(mLayout);
+
+}
+
+ModuleWidget::~ModuleWidget()
+{
+
+}
+
+QWidget *ModuleWidget::Init(SmallWindowModel model)
+{
+ QWidget* mWidget = new QWidget();
+ QHBoxLayout* mLayout = InitHLayout();
+
+ QWidget* createWidget = new QWidget();
+ switch (model)
+ {
+ case PRODUCTIONSUM:
+ {
+ QWidget* Widget = InitWidget1();
+ createWidget = Widget;
+ break;
+ }
+ case PLANFORTHEMONTH:
+ {
+ QWidget* Widget = InitWidget2();
+ createWidget = Widget;
+ break;
+ }
+ case DEVICEMONITORING:
+ {
+ QWidget* Widget = InitWidget3();
+ createWidget = Widget;
+ break;
+ }
+ case MOLDPROGRESS:
+ {
+ QWidget* Widget = InitWidget4();
+ createWidget = Widget;
+ break;
+ }
+ case LOADDISTRIBUTION:
+ {
+ QWidget* Widget = InitWidget5();
+ createWidget = Widget;
+ break;
+ }
+ case PASSEDTHEINSPECTION:
+ {
+ QWidget* Widget = InitWidget6();
+ createWidget = Widget;
+ break;
+ }
+ case QUALITYMANAGEMENT:
+ {
+ QWidget* Widget = InitWidget7();
+ createWidget = Widget;
+ break;
+ }
+ case MATERIALMANAGEMENT:
+ {
+ QWidget* Widget = InitWidget8();
+ createWidget = Widget;
+ break;
+ }
+ case VIDEOSURVEILLANCE:
+ {
+ QWidget* Widget = InitWidget9();
+ createWidget = Widget;
+ break;
+ }
+ }
+
+ mLayout->addWidget(createWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget1()
+{
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout();
+
+ QHBoxLayout* topLayout = InitHLayout(7);
+
+ //-----左上部分
+ QWidget* leftTopWidget = new QWidget();
+ QVBoxLayout* leftTopLayout = InitVLayout();
+
+ QLabel* lblLeftTop = GetLabel("模具产量");
+ QWidget* leftTopChart = new QWidget();
+ QHBoxLayout* leftTopChartLayout = InitHLayout();
+
+ ChartBar* bar1 = new ChartBar(6);
+ ChartPar cPar1 = bar1->GetPar(CPRODUCTIONSUM1);
+ AxisPar aPar1 = bar1->GetPar(APRODUCTIONSUM1);
+ QList bPar1 = bar1->GetBPar(BPRODUCTIONSUMVALUE1);
+ bar1->Set(cPar1);
+ bar1->Set(aPar1);
+ bar1->Init(bPar1);
+ leftTopChartLayout->addWidget(bar1);
+ leftTopChart->setLayout(leftTopChartLayout);
+
+ leftTopLayout->addWidget(lblLeftTop);
+ leftTopLayout->addWidget(leftTopChart);
+ leftTopWidget->setLayout(leftTopLayout);
+
+ //-----右上部分
+ QWidget* rightTopWidget = new QWidget();
+ QVBoxLayout* rightTopLayout = InitVLayout();
+
+ QLabel* lblRightTop = GetLabel("每月模具产量趋势图");
+ QWidget* rightTopChart = new QWidget();
+ QHBoxLayout* rightTopChartLayout = InitHLayout();
+
+ ChartLine* line1 = new ChartLine();
+ ChartPar cPar2 = bar1->GetPar(CPRODUCTIONSUM1);
+ QList lPar1 = line1->GetLPar(LPRODUCTIONSUMVALUE1);
+ AxisPar aPar2 = bar1->GetPar(APRODUCTIONSUM2);
+ line1->Set(cPar2);
+ line1->Set(aPar2);
+ line1->Init(lPar1);
+ rightTopChartLayout->addWidget(line1);
+ rightTopChart->setLayout(rightTopChartLayout);
+
+ rightTopLayout->addWidget(lblRightTop);
+ rightTopLayout->addWidget(rightTopChart);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ topLayout->addWidget(leftTopWidget);
+ topLayout->addWidget(rightTopWidget);
+
+ QHBoxLayout* bottomLayout = InitHLayout(7);
+
+ //-----左下部分
+ QWidget* leftBottomWidget = new QWidget();
+ QVBoxLayout* leftBottomLayout = InitVLayout();
+
+ QLabel* lblLeftBottom = GetLabel("模具产量");
+ QWidget* leftBottomChart = new QWidget();
+ QHBoxLayout* leftBottomChartLayout = InitHLayout();
+
+ ChartBar* bar2 = new ChartBar(6);
+ ChartPar cPar3 = bar1->GetPar(CPRODUCTIONSUM3);
+ QList bPar2 = bar2->GetBPar(BPRODUCTIONSUMVALUE2);
+ AxisPar aPar3 = bar2->GetPar(APRODUCTIONSUM3);
+ bar2->Set(cPar3);
+ bar2->Set(aPar3);
+ bar2->Init(bPar2);
+ leftBottomChartLayout->addWidget(bar2);
+ leftBottomChart->setLayout(leftBottomChartLayout);
+
+ leftBottomLayout->addWidget(lblLeftBottom);
+ leftBottomLayout->addWidget(leftBottomChart);
+ leftBottomWidget->setLayout(leftBottomLayout);
+
+ //右下部分
+ QWidget* rightBottomWidget = new QWidget();
+ QVBoxLayout* rightBottomLayout = InitVLayout();
+
+ QLabel* lblRightBottom = GetLabel("每月模具产量趋势图");
+ QWidget* rightBottomChart = new QWidget();
+ QHBoxLayout* rightBottomChartLayout = InitHLayout();
+
+ ChartLine* line2 = new ChartLine();
+ ChartPar cPar4 = bar1->GetPar(CPRODUCTIONSUM4);
+ QList lPar2 = line2->GetLPar(LPRODUCTIONSUMVALUE2);
+ AxisPar aPar4 = line2->GetPar(APRODUCTIONSUM4);
+ line2->Set(cPar4);
+ line2->Set(aPar4);
+ line2->Init(lPar2);
+ rightBottomChartLayout->addWidget(line2);
+ rightBottomChart->setLayout(rightBottomChartLayout);
+
+ rightBottomLayout->addWidget(lblRightBottom);
+ rightBottomLayout->addWidget(rightBottomChart);
+ rightBottomWidget->setLayout(rightBottomLayout);
+
+ //总布局
+ bottomLayout->addWidget(leftBottomWidget);
+ bottomLayout->addWidget(rightBottomWidget);
+
+ mLayout->addLayout(topLayout);
+ mLayout->addLayout(bottomLayout);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget2()
+{
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout();
+
+ QHBoxLayout* topLayout = InitHLayout();
+
+ //左上
+ QWidget* leftTopWidget = new QWidget();
+ QVBoxLayout* leftTopLayout = InitVLayout();
+
+ QLabel* lblLeftTop = GetLabel("");
+ QWidget* leftTopChartWidget = new QWidget();
+ QHBoxLayout* leftTopChartLayout = InitHLayout();
+ ContorlRoundProBar* bar = new ContorlRoundProBar();
+ bar->setFixedSize(150,150);
+ leftTopChartLayout->addWidget(bar);
+ leftTopChartWidget->setLayout(leftTopChartLayout);
+
+ leftTopLayout->addWidget(lblLeftTop);
+ leftTopLayout->addWidget(leftTopChartWidget);
+ leftTopWidget->setLayout(leftTopLayout);
+
+
+ //中上
+ QWidget* midTopWidget = new QWidget();
+ QVBoxLayout* midTopLayout = InitVLayout();
+
+ QLabel* lblMidTop = GetLabel("");
+ QWidget* midTopChartWidget = new QWidget();
+ QHBoxLayout* midTopChartLayout = InitHLayout();
+ ChartBar* bar1 = new ChartBar(3);
+ ChartPar cPar1 = bar1->GetPar(CPLANFORTHEMONTH1);
+ QList bPar1 = bar1->GetBPar(BPLANFORTHEMONTHVALUE1);
+ AxisPar aPar1 = bar1->GetPar(APLANFORTHEMONTH1);
+ bar1->Set(cPar1);
+ bar1->Set(aPar1);
+ bar1->Init(bPar1);
+ midTopChartLayout->addWidget(bar1);
+ midTopChartWidget->setLayout(midTopChartLayout);
+ midTopLayout->addWidget(lblMidTop);
+ midTopLayout->addWidget(midTopChartWidget);
+ midTopWidget->setLayout(midTopLayout);
+
+ //右上
+ QWidget* rightTopWidget = new QWidget();
+ QVBoxLayout* rightTopLayout = InitVLayout();
+
+ QLabel* lblRightTop = GetLabel("");
+ QWidget* RightTopChartWidget = new QWidget();
+ QHBoxLayout* RightTopChartLayout = InitHLayout();
+ ContorlRoundProBar* bar2 = new ContorlRoundProBar();
+ bar2->setFixedSize(150,150);
+ RightTopChartLayout->addWidget(bar2);
+ RightTopChartWidget->setLayout(RightTopChartLayout);
+ rightTopLayout->addWidget(lblRightTop);
+ rightTopLayout->addWidget(RightTopChartWidget);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ topLayout->addWidget(leftTopWidget);
+ topLayout->addWidget(midTopWidget);
+ topLayout->addWidget(rightTopWidget);
+
+ //下面
+ QWidget* bottomWidget = new QWidget();
+ QVBoxLayout* bottomLayout = InitVLayout();
+
+ QLabel* lblBottom = GetLabel("");
+ QWidget* bottomChartWidget = new QWidget();
+ QHBoxLayout* bottomChartLayout = InitHLayout();
+
+ ChartBar* bar3 = new ChartBar(2);
+ ChartPar cPar2 = bar3->GetPar(CPLANFORTHEMONTH2);
+ QList bPar2 = bar3->GetBPar(BPLANFORTHEMONTHVALUE2);
+ AxisPar aPar2 = bar3->GetPar(APLANFORTHEMONTH2);
+ bar3->Set(cPar2);
+ bar3->Set(aPar2);
+ bar3->Init(bPar2);
+ bottomChartLayout->addWidget(bar3);
+ bottomChartWidget->setLayout(bottomChartLayout);
+ bottomLayout->addWidget(lblBottom);
+ bottomLayout->addWidget(bottomChartWidget);
+ bottomWidget->setLayout(bottomLayout);
+
+ mLayout->addLayout(topLayout);
+ mLayout->addWidget(bottomWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget3()
+{
+ const QString cyanColor = "0,176,180";
+ const QString redColor = "214,77,84";
+ const QString yellowColor = "255,192,0";
+ const QString greyColor = "210,210,210";
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout();
+
+ //上半段
+ QWidget* topWidget = new QWidget();
+ QHBoxLayout* topLayout = InitHLayout(7);
+
+ const QStringList topColorList = QStringList() << cyanColor << greyColor << redColor << cyanColor
+ << cyanColor << yellowColor << yellowColor << greyColor;
+ const QStringList topNameList = QStringList() << "TID11" << "" << "TID13" << "TID14"
+ << "TID15" << "TID16" << "TID17" << "";
+ const QStringList topNameList1 = QStringList() << "PID11" << "" << "PID13" << "PID14"
+ << "PID15" << "PID16" << "PID17" << "";
+ const QStringList topBottomList = QStringList() << "CNC1" << "" << "CNC3" << "CNC4"
+ << "CNC5" << "CNC6" << "CNC7" << "";
+ const QList topBoolList = QList() << 0 << 1 << 0 << 0 << 0 << 0 << 0 << 1;
+ const QStringList topRightNList = QStringList() << "稼动率" << "开机数量" << "待机数量" << "维护数量";
+ const QStringList topRightVList = QStringList() << "85%" << "3" << "2" << "1";
+
+ QWidget* topLeftWidget = new QWidget();
+ QVBoxLayout* topLeftLayout = InitVLayout();
+ QLabel* lblTopLeftTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* topLeftBodyWidget = Device_InitBodyWidget(topColorList,topNameList,topNameList1,topBoolList);
+ QWidget* topLeftBottomWidget = Device_InitBottomWidget(topBottomList);
+ topLeftBottomWidget->setFixedHeight(25);
+ topLeftLayout->addWidget(lblTopLeftTitle);
+ topLeftLayout->addWidget(topLeftBodyWidget);
+ topLeftLayout->addWidget(topLeftBottomWidget);
+ topLeftWidget->setLayout(topLeftLayout);
+
+ QWidget* topRightWidget = new QWidget();
+ topRightWidget->setFixedWidth(110);
+ QVBoxLayout* topRightLayout = InitVLayout();
+ QLabel* lblTopRightTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* topRightBodyWidget = Device_InitRightWidget(topRightNList,topRightVList);
+ topRightLayout->addWidget(lblTopRightTitle);
+ topRightLayout->addWidget(topRightBodyWidget);
+ topRightWidget->setLayout(topRightLayout);
+
+ topLayout->addWidget(topLeftWidget);
+ topLayout->addWidget(topRightWidget);
+ topWidget->setLayout(topLayout);
+
+ //中间段
+ QWidget* bodyWidget = new QWidget();
+ QHBoxLayout* bodyLayout = InitHLayout(7);
+
+ const QStringList bodyColorList = QStringList() << greyColor << greyColor << cyanColor << greyColor
+ << redColor << cyanColor << cyanColor << greyColor;
+ const QStringList bodyNameList = QStringList() << "" << "" << "TID23" << ""
+ << "TID25" << "TID26" << "TID27" << "";
+ const QStringList bodyNameList1 = QStringList() <<"" << "" << "PID23" << ""
+ << "PID25" << "PID26" << "PID27" << "";
+ const QStringList bodyBottomList = QStringList() << "" << "" << "EDM3" << ""
+ << "EDM5" << "EDM6" << "EDM7" << "";
+ const QList bodyBoolList = QList() << 1 << 1 << 0 << 1 << 0 << 0 << 0 << 1;
+ const QStringList bodyRightNList = QStringList() << "稼动率" << "开机数量" << "待机数量" << "维护数量";
+ const QStringList bodyRightVList = QStringList() << "90%" << "3" << "0" << "1";
+ QWidget* bodyLeftWidget = new QWidget();
+ QVBoxLayout* bodyLeftLayout = InitVLayout();
+ QLabel* bodyTopLeftTitle = InitLabel("EDM",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* bodyLeftBodyWidget = Device_InitBodyWidget(bodyColorList,bodyNameList,bodyNameList1,bodyBoolList);
+ QWidget* bodyLeftBottomWidget = Device_InitBottomWidget(bodyBottomList);
+ bodyLeftBottomWidget->setFixedHeight(25);
+ bodyLeftLayout->addWidget(bodyTopLeftTitle);
+ bodyLeftLayout->addWidget(bodyLeftBodyWidget);
+ bodyLeftLayout->addWidget(bodyLeftBottomWidget);
+ bodyLeftWidget->setLayout(bodyLeftLayout);
+
+ QWidget* bodyRightWidget = new QWidget();
+ bodyRightWidget->setFixedWidth(110);
+ QVBoxLayout* bodyRightLayout = InitVLayout();
+ QLabel* lblBodyRightTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* bodyRightBodyWidget = Device_InitRightWidget(bodyRightNList,bodyRightVList);
+ bodyRightLayout->addWidget(lblBodyRightTitle);
+ bodyRightLayout->addWidget(bodyRightBodyWidget);
+ bodyRightWidget->setLayout(bodyRightLayout);
+
+ bodyLayout->addWidget(bodyLeftWidget);
+ bodyLayout->addWidget(bodyRightWidget);
+ bodyWidget->setLayout(bodyLayout);
+
+ //底部
+ QWidget* bottomWidget = new QWidget();
+ QHBoxLayout* bottomLayout = InitHLayout(7);
+
+ const QStringList bottomColorList = QStringList() << yellowColor << yellowColor << yellowColor << greyColor
+ << cyanColor << redColor << cyanColor << yellowColor;
+ const QStringList bottomNameList = QStringList() << "TID31" << "TID32" << "TID33" << ""
+ << "TID35" << "TID36" << "TID37" << "TID38";
+ const QStringList bottomNameList1 = QStringList() << "PID31" << "PID32" << "PID33" << ""
+ << "PID35" << "PID36" << "PID37" << "PID38";
+ const QStringList bottomBottomList = QStringList() << "WEDM1" << "WEDM2" << "WEDM3" << ""
+ << "WEDM5" << "WEDM6" << "WEDM7" << "WEDM8";
+ const QList bottomBoolList = QList() << 1 << 1 << 0 << 1 << 0 << 0 << 0 << 1;
+ const QStringList bottomRightNList = QStringList() << "稼动率" << "开机数量" << "待机数量" << "维护数量";
+ const QStringList bottomRightVList = QStringList() << "95%" << "2" << "4" << "1";
+ QWidget* bottomLeftWidget = new QWidget();
+ QVBoxLayout* bottomLeftLayout = InitVLayout();
+ QLabel* bottomTopLeftTitle = InitLabel("EDM",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* bottomLeftBodyWidget = Device_InitBodyWidget(bottomColorList,bottomNameList,bottomNameList1,bottomBoolList);
+ QWidget* bottomLeftBottomWidget = Device_InitBottomWidget(bottomBottomList);
+ bottomLeftBottomWidget->setFixedHeight(25);
+ bottomLeftLayout->addWidget(bottomTopLeftTitle);
+ bottomLeftLayout->addWidget(bottomLeftBodyWidget);
+ bottomLeftLayout->addWidget(bottomLeftBottomWidget);
+ bottomLeftWidget->setLayout(bottomLeftLayout);
+
+ QWidget* bottomRightWidget = new QWidget();
+ bottomRightWidget->setFixedWidth(110);
+ QVBoxLayout* bottomRightLayout = InitVLayout();
+ QLabel* lblBottomRightTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* bottomRightBodyWidget = Device_InitRightWidget(bottomRightNList,bottomRightVList);
+ bottomRightLayout->addWidget(lblBottomRightTitle);
+ bottomRightLayout->addWidget(bottomRightBodyWidget);
+ bottomRightWidget->setLayout(bottomRightLayout);
+
+ bottomLayout->addWidget(bottomLeftWidget);
+ bottomLayout->addWidget(bottomRightWidget);
+ bottomWidget->setLayout(bottomLayout);
+
+ mLayout->addWidget(topWidget);
+ mLayout->addWidget(bodyWidget);
+ mLayout->addWidget(bottomWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget4()
+{
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+
+ QWidget* mWidget = new QWidget();
+ QHBoxLayout* mLayout = InitHLayout();
+
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ QList list;
+ QList list1;
+ for(int i = 0; i < 21; i++)
+ {
+ QStringList msg;
+ msg.push_back(QString::number(i + 1));
+ msg.push_back("FK" + QString::number(i + 1));
+ msg.push_back("V" + QString::number(i + 1));
+ msg.push_back("修膜");
+ msg.push_back("加工中");
+ msg.push_back("面板");
+ msg.push_back("2020-01-01");
+ QVariantList valueList;
+ int j = qrand()%(20);
+ int k = qrand()%(20);
+ int l = qrand()%(20);
+ valueList << j << k << l;
+ list.push_back(msg);
+ list1.push_back(valueList);
+ }
+
+ QWidget* leftWidget = new QWidget();
+ QVBoxLayout* leftLayout = InitVLayout();
+ QLabel* lbLeftlTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ MoldProTableView* view = new MoldProTableView();
+ view->Set_Model_Data(list,list1);
+ leftLayout->addWidget(lbLeftlTitle);
+ leftLayout->addWidget(view);
+ leftWidget->setLayout(leftLayout);
+
+ //右边 上面
+ QWidget* rightWdget = new QWidget();
+ rightWdget->setFixedWidth(300);
+ QVBoxLayout* rightLayout = InitVLayout();
+
+ QWidget* rightTopWidget = new QWidget();
+ rightTopWidget->setFixedHeight(300);
+ QVBoxLayout* rightTopLayout = InitVLayout();
+ QLabel* lblRightTopTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* rightTopChartWidget = new QWidget();
+ QHBoxLayout* rightTopChartLayout = InitHLayout();
+ ChartPie* pie = new ChartPie();
+ ChartPar cPar = pie->GetPar(CLOADDISTRIBUTION1);
+ QList colorList = QList() << QColor(65,176,254) << QColor(0,175,80) << QColor(255,192,0);
+ QStringList nameList = QStringList() << "加工中" << "正常支付" << "延期";
+ QList valueList = QList() << 45 << 27 << 27;
+ pie->Set(cPar);
+ pie->Init(colorList,nameList,valueList,99);
+ rightTopChartLayout->addWidget(pie);
+ rightTopChartWidget->setLayout(rightTopChartLayout);
+ rightTopLayout->addWidget(lblRightTopTitle);
+ rightTopLayout->addWidget(rightTopChartWidget);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ //右边 下面
+ QWidget* rightBottomWidget = new QWidget();
+ QVBoxLayout* rightBottomLayout = InitVLayout();
+
+ QLabel* lblRightBottomTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* RightBottomChartWidget = new QWidget();
+// RightBottomChartWidget->setStyleSheet("background-color:rgb(48,48,85);");
+ QHBoxLayout* RightBottomChartLayout = new QHBoxLayout();
+ ContorlRoundProBar* bar = new ContorlRoundProBar();
+ bar->setStyleSheet("background-color:rgb(48,42,76);");
+ RightBottomChartLayout->addWidget(bar);
+ RightBottomChartWidget->setLayout(RightBottomChartLayout);
+ rightBottomLayout->addWidget(lblRightBottomTitle);
+ rightBottomLayout->addWidget(RightBottomChartWidget);
+ rightBottomWidget->setLayout(rightBottomLayout);
+
+ rightLayout->addWidget(rightTopWidget);
+ rightLayout->addWidget(rightBottomWidget);
+ rightWdget->setLayout(rightLayout);
+
+ mLayout->addWidget(leftWidget);
+ mLayout->addWidget(rightWdget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget5()
+{
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout(7);
+
+ //上面
+ QWidget* TopWidget = new QWidget();
+ QVBoxLayout* TopLayout = InitVLayout();
+
+ QLabel* lblTopTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* TopViewWidget = new QWidget();
+ QVBoxLayout* TopViewLayout = InitVLayout();
+ LoadDistributionTableView* view = new LoadDistributionTableView();
+ QList valueList;
+ for(int i = 0; i < 9; i++)
+ {
+ QStringList list;
+ list << "CNC粗" << "50H" << "123H" << "50H" << "100H" << "80H" << "100H" << "138H";
+ valueList.push_back(list);
+ }
+ view->Set_Model_Data(valueList);
+ TopViewLayout->addWidget(view);
+ TopViewWidget->setLayout(TopViewLayout);
+
+ TopLayout->addWidget(lblTopTitle);
+ TopLayout->addWidget(TopViewWidget);
+ TopWidget->setLayout(TopLayout);
+
+ //下面
+ QWidget* bottomWidget = new QWidget();
+ QHBoxLayout* bottomLayout = InitHLayout(7);
+
+ QWidget* LeftBottomWidget = new QWidget();
+ QVBoxLayout* LeftBottomLayout = InitVLayout();
+
+ QLabel* lblLeftBottomTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* leftBottomChartWidget = new QWidget();
+ QHBoxLayout* leftBottomChartLayout = InitHLayout();
+
+ qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //不能放在循环里,否则容易出现很多相同随机数
+ ChartBar* bar1 = new ChartBar(2);
+ ChartPar cPar1 = bar1->GetPar(CLOADDISTRIBUTION1);
+ QList bPar1 = bar1->GetBPar(BLOADDISTRIBUTIONVALUE1);
+ AxisPar aPar1 = bar1->GetPar(ALOADDISTRIBUTION1);
+ bar1->Set(cPar1);
+ bar1->Set(aPar1);
+ bar1->Init(bPar1);
+ leftBottomChartLayout->addWidget(bar1);
+ leftBottomChartWidget->setLayout(leftBottomChartLayout);
+ LeftBottomLayout->addWidget(lblLeftBottomTitle);
+ LeftBottomLayout->addWidget(leftBottomChartWidget);
+ LeftBottomWidget->setLayout(LeftBottomLayout);
+
+ //右下
+ QWidget* rightBottomWidget = new QWidget();
+ QVBoxLayout* rightBottomLayout = InitVLayout();
+
+ QLabel* lblrightBottomTitle = InitLabel("CNC",0,30,ModuleWidget::POSLEFT,titleStyle);
+ QWidget* rightBottomChart = new QWidget();
+ QHBoxLayout* rightBottomChartLayout = InitHLayout();
+
+ ChartLine* line1 = new ChartLine();
+ ChartPar cPar2 = bar1->GetPar(CLOADDISTRIBUTION2);
+ QList lPar1 = line1->GetLPar(LLOADDISTRIBUTIONVALUE1);
+ AxisPar aPar2 = line1->GetPar(ALOADDISTRIBUTION2);
+ line1->Set(cPar2);
+ line1->Set(aPar2);
+ line1->Init(lPar1);
+ rightBottomChartLayout->addWidget(line1);
+ rightBottomChart->setLayout(rightBottomChartLayout);
+
+ rightBottomLayout->addWidget(lblrightBottomTitle);
+ rightBottomLayout->addWidget(rightBottomChart);
+ rightBottomWidget->setLayout(rightBottomLayout);
+
+ bottomLayout->addWidget(LeftBottomWidget);
+ bottomLayout->addWidget(rightBottomWidget);
+ bottomWidget->setLayout(bottomLayout);
+
+ mLayout->addWidget(TopWidget);
+ mLayout->addWidget(bottomWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget6()
+{
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+ QWidget* mWidget = new QWidget();
+
+ QVBoxLayout* mLayout = InitVLayout();
+
+ //上
+ QWidget* topWidget = new QWidget();
+ QHBoxLayout* topLayout = InitHLayout();
+
+ //左上
+ QWidget* leftTopWidget = new QWidget();
+ QVBoxLayout* leftTopLayout = InitVLayout();
+ QLabel* lblLeftTopTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //左上图表
+ QWidget* leftTopChartWidget = new QWidget();
+ QHBoxLayout* leftTopChartLayout = InitHLayout();
+ ChartLine* line1 = new ChartLine();
+ ChartPar cPar1 = line1->GetPar(CPASSEDTHEINSPECTION1);
+ AxisPar aPar1 = line1->GetPar(APASSEDTHEINSPECTION1);
+ QList lPar1 = line1->GetLPar(LPASSEDTHEINSPECTIONVALUE1);
+ line1->Set(cPar1);
+ line1->Set(aPar1);
+ line1->Init(lPar1);
+ leftTopChartLayout->addWidget(line1);
+ leftTopChartWidget->setLayout(leftTopChartLayout);
+
+ leftTopLayout->addWidget(lblLeftTopTitle);
+ leftTopLayout->addWidget(leftTopChartWidget);
+ leftTopWidget->setLayout(leftTopLayout);
+
+ //右上
+ QWidget* rightTopWidget = new QWidget();
+ QVBoxLayout* rightTopLayout = InitVLayout();
+ QLabel* lblRightTopTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //右上图表
+ QWidget* rightTopChartWidget = new QWidget();
+ QHBoxLayout* rightTopChartLayout = InitHLayout();
+ ChartLine* line2 = new ChartLine();
+ ChartPar cPar2 = line2->GetPar(CPASSEDTHEINSPECTION2);
+ AxisPar aPar2 = line2->GetPar(APASSEDTHEINSPECTION2);
+ QList lPar2 = line2->GetLPar(LPASSEDTHEINSPECTIONVALUE2);
+ line2->Set(cPar2);
+ line2->Set(aPar2);
+ line2->Init(lPar2);
+ rightTopChartLayout->addWidget(line2);
+ rightTopChartWidget->setLayout(rightTopChartLayout);
+
+ rightTopLayout->addWidget(lblRightTopTitle);
+ rightTopLayout->addWidget(rightTopChartWidget);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ topLayout->addWidget(leftTopWidget);
+ topLayout->addWidget(rightTopWidget);
+ topWidget->setLayout(topLayout);
+
+ //下
+ QWidget* bottomWidget = new QWidget();
+ QHBoxLayout* bottomLayout = InitHLayout();
+
+ //左下
+ QWidget* leftBottomWidget = new QWidget();
+ QVBoxLayout* leftBottomLayout = InitVLayout();
+ QLabel* lblLeftBottomTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //左下图表
+ QWidget* leftBottomChartWidget = new QWidget();
+ QHBoxLayout* leftBottomChartLayout = InitHLayout();
+ ContorlRoundProBar* bar1 = new ContorlRoundProBar();
+ bar1->setStyleSheet("background-color:rgb(45,45,85);");
+ bar1->setFixedWidth(300);
+ leftBottomChartLayout->addWidget(bar1);
+ leftBottomChartWidget->setLayout(leftBottomChartLayout);
+ leftBottomLayout->addWidget(lblLeftBottomTitle);
+ leftBottomLayout->addWidget(leftBottomChartWidget);
+ leftBottomWidget->setLayout(leftBottomLayout);
+
+ //右下
+ QWidget* rightBottomWidget = new QWidget();
+ QVBoxLayout* rightBottomLayout = InitVLayout();
+ QLabel* lblRightBottomTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //右下图表
+ QWidget* rightBottomChartWidget = new QWidget();
+ QHBoxLayout* rightBottomChartLayout = InitHLayout();
+ ChartBar* bar2 = new ChartBar(1);
+ ChartPar cPar3 = bar2->GetPar(CPASSEDTHEINSPECTION3);
+ AxisPar aPar3 = bar2->GetPar(APASSEDTHEINSPECTION3);
+ QList bPar3 = bar2->GetBPar(BPASSEDTHEINSPECTIONVALUE1);
+ bar2->Set(cPar3);
+ bar2->Set(aPar3);
+ bar2->Init(bPar3);
+ rightBottomChartLayout->addWidget(bar2);
+ rightBottomChartWidget->setLayout(rightBottomChartLayout);
+
+ rightBottomLayout->addWidget(lblRightBottomTitle);
+ rightBottomLayout->addWidget(rightBottomChartWidget);
+ rightBottomWidget->setLayout(rightBottomLayout);
+
+ bottomLayout->addWidget(leftBottomWidget);
+ bottomLayout->addWidget(rightBottomWidget);
+ bottomWidget->setLayout(bottomLayout);
+
+ mLayout->addWidget(topWidget);
+ mLayout->addWidget(bottomWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget7()
+{
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout();
+
+ //上
+ QWidget* topWidget = new QWidget();
+ QHBoxLayout* topLayout = InitHLayout();
+
+ //左上
+ QWidget* leftTopWidget = new QWidget();
+ QVBoxLayout* leftTopLayout = InitVLayout();
+ QLabel* lblLeftTopTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //左上图表
+ QWidget* leftTopChartWidget = new QWidget();
+ QVBoxLayout* leftTopChartLayout = InitVLayout();
+ ChartPie* pie1 = new ChartPie();
+ QList colorList = QList() << QColor(65,176,254) << QColor(0,175,80) << QColor(255,192,0) << QColor(254,0,0);
+ QStringList nameList = QStringList() << "" << "" << "" << "";
+ QList valueList = QList() << 35 << 14 << 36 << 14;
+ ChartPar cPar1 = pie1->GetPar(CQUALITYMANAGEMENT1);
+ pie1->Init(colorList,nameList,valueList,99);
+ leftTopChartLayout->addWidget(pie1);
+ leftTopChartWidget->setLayout(leftTopChartLayout);
+
+ leftTopLayout->addWidget(lblLeftTopTitle);
+ leftTopLayout->addWidget(leftTopChartWidget);
+ leftTopWidget->setLayout(leftTopLayout);
+
+ //右上
+ QWidget* rightTopWidget = new QWidget();
+ QVBoxLayout* rightTopLayout = InitVLayout();
+ QLabel* lblRightTopTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //右上图表
+ QWidget* rightTopChartWidget = new QWidget();
+ QVBoxLayout* rightTopChartLayout = InitVLayout();
+ ChartBar* bar2 = new ChartBar(1);
+ ChartPar cPar2 = bar2->GetPar(CQUALITYMANAGEMENT2);
+ AxisPar aPar2 = bar2->GetPar(AQUALITYMANAGEMENT2);
+ QList bPar2 = bar2->GetBPar(BQUALITYMANAGEMENTVALUE1);
+ bar2->Set(cPar2);
+ bar2->Set(aPar2);
+ bar2->SetMax(79);
+ bar2->SetMaxColor(QColor(255,192,0));
+ bar2->Init(bPar2);
+ rightTopChartLayout->addWidget(bar2);
+ rightTopChartWidget->setLayout(rightTopChartLayout);
+
+ rightTopLayout->addWidget(lblRightTopTitle);
+ rightTopLayout->addWidget(rightTopChartWidget);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ topLayout->addWidget(leftTopWidget);
+ topLayout->addWidget(rightTopWidget);
+ topWidget->setLayout(topLayout);
+
+ //下
+ QWidget* bottomWidget = new QWidget();
+ QVBoxLayout* bottomLayout = InitVLayout();
+ QLabel* lblBottomTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ //下图表
+ QWidget* bottomChartWidget = new QWidget();
+ QHBoxLayout* bottomChartLayout = InitHLayout();
+ ChartLine* line3 = new ChartLine();
+ ChartPar cPar3 = line3->GetPar(CQUALITYMANAGEMENT3);
+ AxisPar aPar3 = line3->GetPar(AQUALITYMANAGEMENT3);
+ QList lPar3 = line3->GetLPar(LQUALITYMANAGEMENTVALUE1);
+ line3->Set(cPar3);
+ line3->Set(aPar3);
+ line3->Init(lPar3);
+ bottomChartLayout->addWidget(line3);
+ bottomChartWidget->setLayout(bottomChartLayout);
+
+ bottomLayout->addWidget(lblBottomTitle);
+ bottomLayout->addWidget(bottomChartWidget);
+ bottomWidget->setLayout(bottomLayout);
+
+ mLayout->addWidget(topWidget);
+ mLayout->addWidget(bottomWidget);
+ mWidget->setLayout(mLayout);
+
+ return mWidget;
+}
+
+QWidget *ModuleWidget::InitWidget8()
+{
+ const QString titleStyle = PubCss::Get()->GetStr(DEVICEMONITORING_BOTTOMLABEL);
+ QWidget* mWidget = new QWidget();
+ QVBoxLayout* mLayout = InitVLayout();
+
+ QWidget* topWidget = new QWidget();
+ QHBoxLayout* topLayout = InitHLayout(7);
+
+ //上 左
+ QWidget* leftTopWidget = new QWidget();
+ QVBoxLayout* leftTopLayout = InitVLayout();
+ QLabel* lblLeftTopTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* leftTopChartWidget = new QWidget();
+ QVBoxLayout* leftTopChartLayout = InitVLayout();
+ ContorlRoundProBar* bar1 = new ContorlRoundProBar();
+ bar1->setFixedHeight(200);
+ bar1->setStyleSheet("background-color:rgb(45,45,85);");
+ leftTopChartLayout->addWidget(bar1);
+
+ leftTopChartWidget->setLayout(leftTopChartLayout);
+ leftTopLayout->addWidget(lblLeftTopTitle);
+ leftTopLayout->addWidget(leftTopChartWidget);
+ leftTopWidget->setLayout(leftTopLayout);
+
+ //上 中
+ QWidget* midTopWidget1 = new QWidget();
+ QVBoxLayout* midTopLayout1 = InitVLayout();
+ QLabel* lblMidTopTitle1 = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* midTopChartWidget1 = new QWidget();
+ QVBoxLayout* midTopChartLayout1 = InitVLayout();
+ ContorlRoundProBar* bar2 = new ContorlRoundProBar();
+ midTopChartLayout1->addWidget(bar2);
+
+ midTopChartWidget1->setLayout(midTopChartLayout1);
+ midTopLayout1->addWidget(lblMidTopTitle1);
+ midTopLayout1->addWidget(midTopChartWidget1);
+ midTopWidget1->setLayout(midTopLayout1);
+
+ //上 中
+ QWidget* midTopWidget2 = new QWidget();
+ QVBoxLayout* midTopLayout2 = InitVLayout();
+ QLabel* lblMidTopTitle2 = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* midTopChartWidget2 = new QWidget();
+ QVBoxLayout* midTopChartLayout2 = InitVLayout();
+ ContorlRoundProBar* bar3 = new ContorlRoundProBar();
+ midTopChartLayout2->addWidget(bar3);
+
+ midTopChartWidget2->setLayout(midTopChartLayout2);
+ midTopLayout2->addWidget(lblMidTopTitle2);
+ midTopLayout2->addWidget(midTopChartWidget2);
+ midTopWidget2->setLayout(midTopLayout2);
+
+ //上 右
+ QWidget* rightTopWidget = new QWidget();
+ QVBoxLayout* rightTopLayout = InitVLayout();
+ QLabel* lblRightTopTitle1 = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* rightTopChartWidget = new QWidget();
+ QVBoxLayout* rightTopChartLayout = InitVLayout();
+ ContorlRoundProBar* bar4 = new ContorlRoundProBar();
+ rightTopChartLayout->addWidget(bar4);
+
+ rightTopChartWidget->setLayout(rightTopChartLayout);
+ rightTopLayout->addWidget(lblRightTopTitle1);
+ rightTopLayout->addWidget(rightTopChartWidget);
+ rightTopWidget->setLayout(rightTopLayout);
+
+ topLayout->addWidget(leftTopWidget);
+ topLayout->addWidget(midTopWidget1);
+ topLayout->addWidget(midTopWidget2);
+ topLayout->addWidget(rightTopWidget);
+ topWidget->setLayout(topLayout);
+
+ //下
+ QWidget* bottomWidget = new QWidget();
+ QVBoxLayout* bottomLayout = InitVLayout();
+ QLabel* lblBottomTitle = InitLabel("钢件合格率",0,30,ModuleWidget::POSLEFT,titleStyle);
+
+ QWidget* bottomChartWidget = new QWidget();
+ QHBoxLayout* bottomChartLayout = InitHLayout();
+ PartsInventoryTableView* view = new PartsInventoryTableView();
+ QList msgList;
+ QList