commit 16e695954da9ee664283c207820a683509d8a72a Author: lzhyasuo <610010854@qq.com> Date: Fri May 6 15:34:00 2022 +0800 2022_5_6 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 valuelist; + for(int i = 0; i < 13; i++) + { + QStringList msg; + msg.push_back(QString::number(i + 1)); + msg.push_back("SSD"); + msg.push_back("材料1"); + msg.push_back("规格1"); + msg.push_back("材料1"); + msg.push_back("32*52*1"); + msg.push_back("100"); + msg.push_back("65"); + msg.push_back("65%"); + QVariantList list = QVariantList() << 30 << 50; + valuelist.push_back(list); + msgList.push_back(msg); + } + view->Set_Model_Data(msgList,valuelist); + bottomChartLayout->addWidget(view); + + 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::InitWidget9() +{ + QWidget* mWidget = new QWidget(); + QHBoxLayout* mLayout = InitHLayout(); + + OpenCVGLWidget* OpenGLWidget = new OpenCVGLWidget(); + + OpenCV_PV_Thread* Thread = new OpenCV_PV_Thread(); + Thread->start(); + bool isOpen = Thread->Open(); + if(!isOpen) + { + Thread->deleteLater(); + } + this->connect(Thread,&OpenCV_PV_Thread::ShowCamera,OpenGLWidget,&OpenCVGLWidget::ShowImg); + + mLayout->addWidget(OpenGLWidget); + mWidget->setLayout(mLayout); + + return mWidget; + +} + +QWidget* ModuleWidget::Device_InitRightWidget(QStringList nameList, QStringList valueList) +{ + const QString LabelStyle = "color:rgb(255,255,255);" + "font ""黑体"" 12pt;"; + QWidget* rightWidget = new QWidget(); + QVBoxLayout* rightLayout = InitVLayout(20,10,20); + + if(nameList.size() != valueList.size()) + return rightWidget; + + for(int i = 0; i addWidget(lbl); + } + rightLayout->addStretch(); + rightWidget->setLayout(rightLayout); + + return rightWidget; +} + +QWidget* ModuleWidget::Device_InitBodyWidget(QStringList colorList,QStringList nameList, QStringList nameList1, QList boolList) +{ + + QWidget* bodyWidget = new QWidget(); + QHBoxLayout* bodyLayout = InitHLayout(5); + if(colorList.size() != nameList.size() && colorList.size() != nameList1.size() && colorList.size() != boolList.size()) + return bodyWidget; + for(int i = 0; i < colorList.size(); i++) + { + QWidget* topWidget1 = GetColorWidget(colorList.at(i),nameList.at(i),nameList1.at(i),boolList.at(i)); + bodyLayout->addWidget(topWidget1); + } + bodyWidget->setLayout(bodyLayout); + return bodyWidget; +} + +QWidget *ModuleWidget::Device_InitBottomWidget(QStringList list) +{ + const QString LabelStyle = "color:rgb(255,255,255);"; + QWidget* topBottomWidget = new QWidget(); + QHBoxLayout* topBottomLayout = InitHLayout(5); + for(auto &i : list) + { + QLabel* lbl = InitLabel(i,0,0,ModuleWidget::POSCENTER,LabelStyle); + topBottomLayout->addWidget(lbl); + } + topBottomWidget->setLayout(topBottomLayout); + + return topBottomWidget; +} + +QWidget *ModuleWidget::GetColorWidget(QString color, QString text, QString text1, bool isActivation) +{ + const QString css = QString("#mWidget{background-color:rgb(%1);}").arg(color); + const QString labelCss = QString("color:rgb(235,235,235);"); + QWidget* mWidget = new QWidget(); + mWidget->setObjectName("mWidget"); + mWidget->setStyleSheet(css); + if(isActivation) + { +// qDebug() << text << " : false"; + return mWidget; + } + + QVBoxLayout* mLayout = InitVLayout(); + + QLabel* lblText = InitLabel(text,0,35,ModuleWidget::POSCENTER,labelCss); + QLabel* lblText1 = InitLabel(text1,0,35,ModuleWidget::POSCENTER,labelCss); + + mLayout->addWidget(lblText); + mLayout->addWidget(lblText1); + + mWidget->setLayout(mLayout); + + return mWidget; +} + +QLabel *ModuleWidget::GetLabel(QString name) +{ + { + const QString css = PubCss::Get()->GetStr(SMALLWINDOW_TITLELABEL); + QLabel* lbl = InitLabel(name,0,0,ModuleWidget::POSLEFT,css); + + return lbl; + } +} diff --git a/Src/Gui/ModuleWidget.h b/Src/Gui/ModuleWidget.h new file mode 100644 index 0000000..1ccdcac --- /dev/null +++ b/Src/Gui/ModuleWidget.h @@ -0,0 +1,51 @@ +#ifndef _MODULE_WIDGET_H_ +#define _MODULE_WIDGET_H_ + +#include +#include "BaseWidget.h" + +enum SmallWindowModel +{ + PRODUCTIONSUM, //产量汇总 + PLANFORTHEMONTH, //当月计划 + DEVICEMONITORING, //设备监控 + MOLDPROGRESS, //模具进度 + LOADDISTRIBUTION, //负荷分布 + PASSEDTHEINSPECTION, //送检合格 + QUALITYMANAGEMENT, //品质管理 + MATERIALMANAGEMENT, //物料管理 + VIDEOSURVEILLANCE, //视频监控 + LARGESCREENMAP, //大屏地图 + SYSTEMSETUP, //系统设置 + LoadDistribution +}; + +class ModuleWidget : public BaseWidget +{ + Q_OBJECT +public: + ModuleWidget(SmallWindowModel,QWidget* parent = nullptr); + ~ModuleWidget(); + +private: + QWidget* Init(SmallWindowModel); + + QWidget* InitWidget1(); + QWidget* InitWidget2(); + QWidget* InitWidget3(); + QWidget* InitWidget4(); + QWidget* InitWidget5(); + QWidget* InitWidget6(); + QWidget* InitWidget7(); + QWidget* InitWidget8(); + QWidget* InitWidget9(); + + QLabel* GetLabel(QString name); + QWidget* Device_InitRightWidget(QStringList nameList, QStringList valueList); + QWidget* Device_InitBodyWidget(QStringList colorList,QStringList nameList, QStringList nameList1, QList boolList); + QWidget* Device_InitBottomWidget(QStringList list); + QWidget* GetColorWidget(QString color, QString text, QString text1, bool isActivation); +}; + + +#endif //_MODULE_WIDGET_H_ diff --git a/Src/Gui/OpenCVGLWidget.cpp b/Src/Gui/OpenCVGLWidget.cpp new file mode 100644 index 0000000..6379ba9 --- /dev/null +++ b/Src/Gui/OpenCVGLWidget.cpp @@ -0,0 +1,104 @@ +#include "OpenCVGLWidget.h" +#include +#include +#include +#include +#include +#include +#include + +OpenCVGLWidget::OpenCVGLWidget(QWidget *parent) + :QOpenGLWidget (parent) +{ + +} + +OpenCVGLWidget::~OpenCVGLWidget() +{ + +} + + +void OpenCVGLWidget::ShowImg(cv::Mat mat) +{ + if(this->width() == 0 || this->height() == 0) + return; + cv::resize(mat,mat,cv::Size(this->width(),this->height())); + img = MatToQImage(mat); + update(); +} + +QImage OpenCVGLWidget::MatToQImage(const cv::Mat& mat) +{ + switch (mat.type()) + { + // 8-bit, 4 channel + case CV_8UC4: + { + QImage image(mat.data, + mat.cols, mat.rows, + static_cast(mat.step), + QImage::Format_ARGB32); + + return image; + } + + // 8-bit, 3 channel + case CV_8UC3: + { + QImage image(mat.data, + mat.cols, mat.rows, + static_cast(mat.step), + QImage::Format_RGB888); + + return image.rgbSwapped(); + } + + // 8-bit, 1 channel + case CV_8UC1: + { +#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) + QImage image(mat.data, + mat.cols, mat.rows, + static_cast(mat.step), + QImage::Format_Grayscale8); +#else + static QVector sColorTable; + + // only create our color table the first time + if (sColorTable.isEmpty()) + { + sColorTable.resize( 256 ); + + for ( int i = 0; i < 256; ++i ) + { + sColorTable[i] = qRgb( i, i, i ); + } + } + + QImage image(mat.data, + mat.cols, mat.rows, + static_cast(mat.step), + QImage::Format_Indexed8 ); + + image.setColorTable(sColorTable); +#endif + + return image; + } + + // wrong + default: + break; + } + return QImage(); +} + + +void OpenCVGLWidget::paintEvent(QPaintEvent *e) +{ + QPainter p; + p.begin(this); + p.drawImage(QPointF(0, 0), img); + p.end(); +} diff --git a/Src/Gui/OpenCVGLWidget.h b/Src/Gui/OpenCVGLWidget.h new file mode 100644 index 0000000..304ed52 --- /dev/null +++ b/Src/Gui/OpenCVGLWidget.h @@ -0,0 +1,31 @@ +#ifndef _OPENCV_PV_GLWIDGET_H_ +#define _OPENCV_PV_GLWIDGET_H_ + +#include +#include + +class OpenCVGLWidget : public QOpenGLWidget +{ + Q_OBJECT +public: + OpenCVGLWidget(QWidget* parent = nullptr); + ~OpenCVGLWidget(); + +public slots: + //把图片传入 通过paintEvent显示 + void ShowImg(cv::Mat); + QImage MatToQImage(const cv::Mat& mat); + +protected: + void paintEvent(QPaintEvent *e); +// void resizeEvent(QResizeEvent *e); +// void showEvent(QShowEvent *event); +private: + QImage img; + int SubHeight = 0; + int SubWidth = 0; + int Height = 0; + int Width = 0; +}; + +#endif //_OPENCV_PV_GLWIDGET_H_ diff --git a/Src/Gui/SmallWindow.cpp b/Src/Gui/SmallWindow.cpp new file mode 100644 index 0000000..abe9537 --- /dev/null +++ b/Src/Gui/SmallWindow.cpp @@ -0,0 +1,1187 @@ +#include "SmallWindow.h" +#include +#include +#include + +#include "DockWidget.h" +#include "ModuleWidget.h" +#include "../Pub/PubCss.h" + +SmallWindow::SmallWindow(QWidget *parent) + :BaseWidget(parent) +{ + this->setFixedSize(980,610); + QHBoxLayout* mLayout = InitHLayout(); + QWidget* mWidget = this->Init(); + mLayout->addWidget(mWidget); + this->setLayout(mLayout); +} + +SmallWindow::~SmallWindow() +{ + +} + +QWidget* SmallWindow::Init() +{ + QWidget* mWidget = new QWidget(); + mWidget->setObjectName("mWidget"); + mWidget->setStyleSheet("#mWidget{background-color:rgb(25,28,59);}"); + QHBoxLayout* mLayout = new QHBoxLayout(); + mLayout->setSpacing(7); + mLayout->setContentsMargins(0,0,0,0); + + QWidget* leftWidget = new QWidget(); + leftWidget->setFixedWidth(110); + leftWidget->setObjectName("leftWidget"); + leftWidget->setStyleSheet("#leftWidget{background-color:rgb(48,48,85);};"); + QVBoxLayout* leftLayout = new QVBoxLayout(); + leftLayout->setSpacing(5); + leftLayout->setContentsMargins(0,0,0,0); + + QPushButton* btn1 = GetLeftButton("01.产量汇总"); + QPushButton* btn2 = GetLeftButton("02.当月计划"); + QPushButton* btn3 = GetLeftButton("03.设备监控"); + QPushButton* btn4 = GetLeftButton("04.模具进度"); + QPushButton* btn5 = GetLeftButton("05.负荷分布"); + QPushButton* btn6 = GetLeftButton("06.送检合格"); + QPushButton* btn7 = GetLeftButton("07.品质管理"); + QPushButton* btn8 = GetLeftButton("08.物料管理"); + QPushButton* btn9 = GetLeftButton("09.视频监控"); + QPushButton* btn10 = GetLeftButton("10.大屏地图"); + QPushButton* btn11 = GetLeftButton("11.系统设置"); + + leftLayout->addWidget(btn1); + leftLayout->addWidget(btn2); + leftLayout->addWidget(btn3); + leftLayout->addWidget(btn4); + leftLayout->addWidget(btn5); + leftLayout->addWidget(btn6); + leftLayout->addWidget(btn7); + leftLayout->addWidget(btn8); + leftLayout->addWidget(btn9); + leftLayout->addWidget(btn10); + leftLayout->addWidget(btn11); + leftLayout->addStretch(); + + leftWidget->setLayout(leftLayout); + + + QWidget* rightWidget = new QWidget(); + QHBoxLayout* rightLayout = new QHBoxLayout(); + rightLayout->setSpacing(0); + rightLayout->setContentsMargins(0,0,0,0); + + QStackedWidget* mSWidget = new QStackedWidget(); + 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); + + mSWidget->addWidget(productionSumWidget); + mSWidget->addWidget(planForTheMonthWidget); + mSWidget->addWidget(deviceMonitorRingWidget); + mSWidget->addWidget(MdloProgressWidget); + mSWidget->addWidget(LoadDistributionWidget); + mSWidget->addWidget(PassedTheInSpectionWidget); + mSWidget->addWidget(QualityManagementWidget); + mSWidget->addWidget(MaterialManagementWidget); + mSWidget->addWidget(VideoSurveillance); + + rightLayout->addWidget(mSWidget); + rightWidget->setLayout(rightLayout); + + mLayout->addWidget(leftWidget); + mLayout->addWidget(rightWidget); + mWidget->setLayout(mLayout); + + this->connect(btn1,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(0); + }); + this->connect(btn2,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(1); + }); + this->connect(btn3,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(2); + }); + this->connect(btn4,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(3); + }); + this->connect(btn5,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(4); + }); + this->connect(btn6,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(5); + }); + this->connect(btn7,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(6); + }); + this->connect(btn8,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(7); + }); + this->connect(btn9,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(8); + }); + return mWidget; +} + +QPushButton *SmallWindow::GetLeftButton(QString name) +{ + const QString css = PubCss::Get()->GetStr(SMALLWINDOW_LEFTBUTTONSTYLE); + QPushButton* btn = InitButton(name,0,30,css); + + return btn; +} + + +#if 0 +QWidget *SmallWindow::InitWindowModel(int index) +{ + QWidget* Widget = new QWidget(); + switch(model) + { + case PRODUCTIONSUM: + { +#if 0 + 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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget1(); + Widget = mWidget; + break; + } + + case PLANFORTHEMONTH: + { +#if 0 + 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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget2(); + Widget = mWidget; + break; + } + + case DEVICEMONITORING: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget3(); + Widget = mWidget; + break; + } + + case MOLDPROGRESS: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget4(); + Widget = mWidget; + break; + } + + case LOADDISTRIBUTION: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget5(); + Widget = mWidget; + break; + } + + case PASSEDTHEINSPECTION: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::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); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget6(); + Widget = mWidget; + break; + } + + case QUALITYMANAGEMENT: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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); + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget7(); + Widget = mWidget; + break; + + } + + case MATERIALMANAGEMENT: + { +#if 0 + 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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::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,BaseWidget::POSLEFT,titleStyle); + + QWidget* bottomChartWidget = new QWidget(); + QHBoxLayout* bottomChartLayout = InitHLayout(); + PartsInventoryTableView* view = new PartsInventoryTableView(); + QList msgList; + QList valuelist; + for(int i = 0; i < 13; i++) + { + QStringList msg; + msg.push_back(QString::number(i + 1)); + msg.push_back("SSD"); + msg.push_back("材料1"); + msg.push_back("规格1"); + msg.push_back("材料1"); + msg.push_back("32*52*1"); + msg.push_back("100"); + msg.push_back("65"); + msg.push_back("65%"); + QVariantList list = QVariantList() << 30 << 50; + valuelist.push_back(list); + msgList.push_back(msg); + } + view->Set_Model_Data(msgList,valuelist); + bottomChartLayout->addWidget(view); + + bottomChartWidget->setLayout(bottomChartLayout); + bottomLayout->addWidget(lblBottomTitle); + bottomLayout->addWidget(bottomChartWidget); + bottomWidget->setLayout(bottomLayout); + + mLayout->addWidget(topWidget); + mLayout->addWidget(bottomWidget); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget8(); + Widget = mWidget; + break; + } + + case VIDEOSURVEILLANCE: + { +#if 0 + QWidget* mWidget = new QWidget(); + QHBoxLayout* mLayout = InitHLayout(); + + OpenCVGLWidget* OpenGLWidget = new OpenCVGLWidget(); + + OpenCV_PV_Thread* Thread = new OpenCV_PV_Thread(); + Thread->start(); + bool isOpen = Thread->Open(); + if(!isOpen) + { + Thread->deleteLater(); + } + this->connect(Thread,&OpenCV_PV_Thread::ShowCamera,OpenGLWidget,&OpenCVGLWidget::ShowImg); + + mLayout->addWidget(OpenGLWidget); + mWidget->setLayout(mLayout); + Widget = mWidget; + break; +#endif + QWidget* mWidget = InitWidget9(); + Widget = mWidget; + break; + + } + } + return Widget; +} + +QPushButton *SmallWindow::GetLeftButton(QString name) +{ + const QString css = PubCss::Get()->GetStr(SMALLWINDOW_LEFTBUTTONSTYLE); + QPushButton* btn = InitButton(name,0,30,css); + + return btn; +} + +QLabel* SmallWindow::GetLabel(QString name) +{ + const QString css = PubCss::Get()->GetStr(SMALLWINDOW_TITLELABEL); + QLabel* lbl = InitLabel(name,0,0,BaseWidget::POSLEFT,css); + + return lbl; +} + + +#if 0 +//DEVICEMONITORING部分的封装 +QWidget* Device_InitRightWidget(QStringList,QStringList); +QWidget* Device_InitBodyWidget(QStringList,QStringList,QStringList,QList); +QWidget* Device_InitBottomWidget(QStringList); +QWidget* GetColorWidget(QString,QString,QString,bool isActivation = false); + +QWidget *SmallWindow::Device_InitRightWidget(QStringList nameList, QStringList valueList) +{ + const QString LabelStyle = "color:rgb(255,255,255);" + "font ""黑体"" 12pt;"; + QWidget* rightWidget = new QWidget(); + QVBoxLayout* rightLayout = InitVLayout(20,10,20); + + if(nameList.size() != valueList.size()) + return rightWidget; + + for(int i = 0; i addWidget(lbl); + } + rightLayout->addStretch(); + rightWidget->setLayout(rightLayout); + + return rightWidget; +} + +QWidget *SmallWindow::Device_InitBodyWidget(QStringList colorList,QStringList nameList, QStringList nameList1, QList boolList) +{ + + QWidget* bodyWidget = new QWidget(); + QHBoxLayout* bodyLayout = InitHLayout(5); + if(colorList.size() != nameList.size() && colorList.size() != nameList1.size() && colorList.size() != boolList.size()) + return bodyWidget; + for(int i = 0; i < colorList.size(); i++) + { + QWidget* topWidget1 = GetColorWidget(colorList.at(i),nameList.at(i),nameList1.at(i),boolList.at(i)); + bodyLayout->addWidget(topWidget1); + } + bodyWidget->setLayout(bodyLayout); + return bodyWidget; + +#if 0 + QWidget* topWidget1 = GetColorWidget(cyanColor,"TID11","PID11"); + QWidget* topWidget2 = GetColorWidget(greyColor,"","",true); + QWidget* topWidget3 = GetColorWidget(redColor,"TID13","PID13"); + QWidget* topWidget4 = GetColorWidget(cyanColor,"TID14","PID14"); + QWidget* topWidget5 = GetColorWidget(cyanColor,"TID15","PID15"); + QWidget* topWidget6 = GetColorWidget(yellowColor,"TID16","PID16"); + QWidget* topWidget7 = GetColorWidget(yellowColor,"TID17","PID17"); + QWidget* topWidget8 = GetColorWidget(greyColor,"","",true); + topBodyLayout->addWidget(topWidget1); + topBodyLayout->addWidget(topWidget2); + topBodyLayout->addWidget(topWidget3); + topBodyLayout->addWidget(topWidget4); + topBodyLayout->addWidget(topWidget5); + topBodyLayout->addWidget(topWidget6); + topBodyLayout->addWidget(topWidget7); + topBodyLayout->addWidget(topWidget8); +#endif + +} + +QWidget *SmallWindow::Device_InitBottomWidget(QStringList list) +{ + const QString LabelStyle = "color:rgb(255,255,255);"; + QWidget* topBottomWidget = new QWidget(); + QHBoxLayout* topBottomLayout = InitHLayout(5); + for(auto &i : list) + { + QLabel* lbl = InitLabel(i,0,0,BaseWidget::POSCENTER,LabelStyle); + topBottomLayout->addWidget(lbl); + } + topBottomWidget->setLayout(topBottomLayout); + + return topBottomWidget; + +} + +QWidget *SmallWindow::GetColorWidget(QString color, QString text, QString text1, bool isActivation) +{ + const QString css = QString("#mWidget{background-color:rgb(%1);}").arg(color); + const QString labelCss = QString("color:rgb(235,235,235);"); + QWidget* mWidget = new QWidget(); + mWidget->setObjectName("mWidget"); + mWidget->setStyleSheet(css); + if(isActivation) + { +// qDebug() << text << " : false"; + return mWidget; + } + + QVBoxLayout* mLayout = InitVLayout(); + + QLabel* lblText = InitLabel(text,0,35,BaseWidget::POSCENTER,labelCss); + QLabel* lblText1 = InitLabel(text1,0,35,BaseWidget::POSCENTER,labelCss); + + mLayout->addWidget(lblText); + mLayout->addWidget(lblText1); + + mWidget->setLayout(mLayout); + + return mWidget; +} + +#endif + +#endif diff --git a/Src/Gui/SmallWindow.h b/Src/Gui/SmallWindow.h new file mode 100644 index 0000000..d883688 --- /dev/null +++ b/Src/Gui/SmallWindow.h @@ -0,0 +1,24 @@ +#ifndef _SMALL_WINDOW_H_ +#define _SMALL_WINDOW_H_ + + +#include "BaseWidget.h" + +class SmallWindow : public BaseWidget +{ + Q_OBJECT +public: + SmallWindow(QWidget* parent = nullptr); + ~SmallWindow(); + +private: + QWidget* Init(); + QWidget* InitWindowModel(int index); + + +protected: + QPushButton* GetLeftButton(QString); + QLabel* GetLabel(QString name); +}; + +#endif //_SMALL_WINDOW_H_ diff --git a/Src/Gui/TypeWindow.cpp b/Src/Gui/TypeWindow.cpp new file mode 100644 index 0000000..5e42b17 --- /dev/null +++ b/Src/Gui/TypeWindow.cpp @@ -0,0 +1,351 @@ +#include "QVBoxLayout" +#include "QPushButton" +#include "QStackedWidget" + +#include "TypeWindow.h" +#include "../Pub/PubCss.h" + +#include "../Chart/ChartLine.h" +#include "../Chart/ChartCurve.h" +#include "../Chart/ChartBar.h" + +TypeWindow::TypeWindow(QWidget *parent) + :BaseWidget(parent) +{ + this->Init(); + this->setObjectName("TypeWindow"); + this->setStyleSheet("#TypeWindow{background-color:rgb(5,30,83);}"); +} + +TypeWindow::~TypeWindow() +{ + +} + +QPushButton* TypeWindow::GetLeftButton(QString name) +{ + const QString css = PubCss::Get()->GetStr(SMALLWINDOW_LEFTBUTTONSTYLE); + QPushButton* btn = InitButton(name,0,30,css); + + return btn; +} + +void TypeWindow::Init() +{ + this->setFixedSize(980,610); + QHBoxLayout* mLayout = InitHLayout(); + + QWidget* leftWidget = new QWidget(); + leftWidget->setObjectName("leftWidget"); + leftWidget->setStyleSheet("#leftWidget{background-color:rgb(4,46,106);}"); + leftWidget->setFixedWidth(110); + QVBoxLayout* leftLayout = InitVLayout(5); + + QPushButton* btn1 = GetLeftButton("标准折线"); + QPushButton* btn2 = GetLeftButton("标准曲线"); + QPushButton* btn3 = GetLeftButton("标准柱状"); + QPushButton* btn4 = GetLeftButton("柱状堆积"); + QPushButton* btn5 = GetLeftButton("柱状分组"); + QPushButton* btn6 = GetLeftButton("横状柱状"); + QPushButton* btn7 = GetLeftButton("横装堆积"); + QPushButton* btn8 = GetLeftButton("横装分组"); + QPushButton* btn9 = GetLeftButton("数据转换"); + QPushButton* btn10 = GetLeftButton("平滑曲线"); + QPushButton* btn11 = GetLeftButton("系统设置"); + + leftLayout->addWidget(btn1); + leftLayout->addWidget(btn2); + leftLayout->addWidget(btn3); + leftLayout->addWidget(btn4); + leftLayout->addWidget(btn5); + leftLayout->addWidget(btn6); + leftLayout->addWidget(btn7); + leftLayout->addWidget(btn8); + leftLayout->addWidget(btn9); + leftLayout->addWidget(btn10); + leftLayout->addWidget(btn11); + leftLayout->addStretch(); + leftWidget->setLayout(leftLayout); + + QWidget* rightWidget = new QWidget(); + QHBoxLayout* rightLayout = InitHLayout(); + QStackedWidget* mSWidget = new QStackedWidget(); + + QWidget* ChartLine = InitWidget(CHARTLINE); + QWidget* ChartCurve = InitWidget(CHARTCURVE); + QWidget* ChartBar1 = InitWidget(CHARTBAR); + QWidget* ChartBar2 = InitWidget(CHARTBAR1); + QWidget* ChartBar3 = InitWidget(CHARTBAR2); + QWidget* ChartBar4 = InitWidget(CHARTBAR3); + QWidget* ChartBar5 = InitWidget(CHARTBAR4); + QWidget* ChartBar6 = InitWidget(CHARTBAR5); + + mSWidget->addWidget(ChartLine); + mSWidget->addWidget(ChartCurve); + mSWidget->addWidget(ChartBar1); + mSWidget->addWidget(ChartBar2); + mSWidget->addWidget(ChartBar3); + mSWidget->addWidget(ChartBar4); + mSWidget->addWidget(ChartBar5); + mSWidget->addWidget(ChartBar6); + + this->connect(btn1,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(0); + }); + this->connect(btn2,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(1); + }); + this->connect(btn3,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(2); + }); + this->connect(btn4,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(3); + }); + this->connect(btn5,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(4); + }); + this->connect(btn6,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(5); + }); + this->connect(btn7,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(6); + }); + this->connect(btn8,&QPushButton::clicked,this,[=](){ + mSWidget->setCurrentIndex(7); + }); + + rightLayout->addWidget(mSWidget); + rightWidget->setLayout(rightLayout); + mLayout->addWidget(leftWidget); + mLayout->addWidget(rightWidget); + this->setLayout(mLayout); +} + +QWidget *TypeWindow::InitWidget(TypeWindowModel index) +{ + QWidget* Widget = nullptr; + switch (index) + { + case CHARTLINE: + { + QWidget* mWidget = new QWidget(); + QHBoxLayout* mLayout = InitHLayout(); + + ChartLine* line = new ChartLine(); + ChartPar cPar = line->GetPar(CCHARTLINE); + AxisPar aPar = line->GetPar(ACHARTLINE); + QList lPar = line->GetLPar(LCHARTLINEVALUE); + line->Set(cPar); + line->Set(aPar); + line->Init(lPar); + + mLayout->addWidget(line); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTCURVE: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(7); + + ChartCurve* curve1 = new ChartCurve(); + ChartPar cPar1 = curve1->GetPar(CCHARTCURVE1); + AxisPar aPar1 = curve1->GetPar(ACHARTCURVE1); + QList cuPar1 = curve1->GetCuPar(CUCHARTCURVE1); + + curve1->Set(cPar1); + curve1->Set(aPar1); + curve1->Init(cuPar1); + + ChartCurve* curve2 = new ChartCurve(); + ChartPar cPar2 = curve2->GetPar(CCHARTCURVE2); + AxisPar aPar2 = curve2->GetPar(ACHARTCURVE2); + QList cuPar2 = curve2->GetCuPar(CUCHARTCURVE2); + + curve2->Set(cPar2); + curve2->Set(aPar2); + curve2->Init(cuPar2); + + ChartCurve* curve3 = new ChartCurve(); + ChartPar cPar3 = curve3->GetPar(CCHARTCURVE3); + AxisPar aPar3 = curve3->GetPar(ACHARTCURVE3); + QList cuPar3 = curve3->GetCuPar(CUCHARTCURVE3); + + curve3->SetPointShow(true); + curve3->Set(cPar3); + curve3->Set(aPar3); + curve3->Init(cuPar3); + + mLayout->addWidget(curve1); + mLayout->addWidget(curve2); + mLayout->addWidget(curve3); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = new QVBoxLayout(); + + ChartBar* bar1 = new ChartBar(1); + ChartPar cPar1 = bar1->GetPar(CCHARTBAR1); + AxisPar aPar1 = bar1->GetPar(ACHARTBAR1); + QList bPar1 = bar1->GetBPar(BCHARTBAR1VALUE1); + + bar1->Set(cPar1); + bar1->Set(aPar1); + bar1->Init(bPar1); + + ChartBar* bar2 = new ChartBar(1); + ChartPar cPar2 = bar2->GetPar(CCHARTBAR1); + AxisPar aPar2 = bar2->GetPar(ACHARTBAR1); + QList bPar2 = bar2->GetBPar(BCHARTBAR1VALUE1); + + bar2->Set(cPar2); + bar2->Set(aPar2); + bar2->Init(bPar2); + + mLayout->addWidget(bar1); + mLayout->addWidget(bar2); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR1: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(); + + ChartBar* bar3 = new ChartBar(2); + ChartPar cPar3 = bar3->GetPar(CCHARTBAR3); + AxisPar aPar3 = bar3->GetPar(ACHARTBAR3); + QList bPar3 = bar3->GetBPar(BCHARTBAR2VALUE1); + + bar3->Set(cPar3); + bar3->Set(aPar3); + bar3->Init(bPar3); + + ChartBar* bar4 = new ChartBar(2); + ChartPar cPar4 = bar4->GetPar(CCHARTBAR4); + AxisPar aPar4 = bar4->GetPar(ACHARTBAR4); + QList bPar4 = bar4->GetBPar(BCHARTBAR2VALUE2); + + bar4->Set(cPar4); + bar4->Set(aPar4); + bar4->Init(bPar4); + + mLayout->addWidget(bar3); + mLayout->addWidget(bar4); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR2: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(); + + ChartBar* bar5 = new ChartBar(3); + ChartPar cPar5 = bar5->GetPar(CCHARTBAR5); + AxisPar aPar5 = bar5->GetPar(ACHARTBAR5); + QList bPar5 = bar5->GetBPar(BCHARTBAR3VALUE1); + + bar5->Set(cPar5); + bar5->Set(aPar5); + bar5->Init(bPar5); + + ChartBar* bar6 = new ChartBar(3); + ChartPar cPar6 = bar6->GetPar(CCHARTBAR6); + AxisPar aPar6 = bar6->GetPar(ACHARTBAR6); + QList bPar6 = bar6->GetBPar(BCHARTBAR3VALUE2); + + bar6->Set(cPar6); + bar6->Set(aPar6); + bar6->Init(bPar6); + + mLayout->addWidget(bar5); + mLayout->addWidget(bar6); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR3: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(); + + ChartBar* bar7 = new ChartBar(4); + ChartPar cPar7 = bar7->GetPar(CCHARTBAR7); + AxisPar aPar7 = bar7->GetPar(ACHARTBAR7); + QList bPar7 = bar7->GetBPar(BCAHRTBAR4VALUE1); + + bar7->Set(cPar7); + bar7->Set(aPar7); + bar7->Init(bPar7); + + mLayout->addWidget(bar7); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR4: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(); + + ChartBar* bar8 = new ChartBar(5); + ChartPar cPar8 = bar8->GetPar(CCHARTBAR8); + AxisPar aPar8 = bar8->GetPar(ACHARTBAR8); + QList bPar8 = bar8->GetBPar(BCAHRTBAR5VALUE1); + + bar8->Set(cPar8); + bar8->Set(aPar8); + bar8->Init(bPar8); + + ChartBar* bar9 = new ChartBar(5); + ChartPar cPar9 = bar9->GetPar(CCHARTBAR9); + AxisPar aPar9 = bar9->GetPar(ACHARTBAR9); + QList bPar9 = bar9->GetBPar(BCAHRTBAR5VALUE2); + + bar9->Set(cPar9); + bar9->Set(aPar9); + bar9->Init(bPar9); + + mLayout->addWidget(bar8); + mLayout->addWidget(bar9); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + case CHARTBAR5: + { + QWidget* mWidget = new QWidget(); + QVBoxLayout* mLayout = InitVLayout(); + + ChartBar* bar10 = new ChartBar(6); + ChartPar cPar10 = bar10->GetPar(CCHARTBAR10); + AxisPar aPar10 = bar10->GetPar(ACHARTBAR10); + QList bPar10 = bar10->GetBPar(BCAHRTBAR6VALUE1); + + bar10->Set(aPar10); + bar10->Set(cPar10); + bar10->Init(bPar10); + + mLayout->addWidget(bar10); + mWidget->setLayout(mLayout); + + Widget = mWidget; + break; + } + } + return Widget; +} diff --git a/Src/Gui/TypeWindow.h b/Src/Gui/TypeWindow.h new file mode 100644 index 0000000..a76860e --- /dev/null +++ b/Src/Gui/TypeWindow.h @@ -0,0 +1,33 @@ +#ifndef _TYPE_WINDOW_H_ +#define _TYPE_WINDOW_H_ + +#include +#include "BaseWidget.h" + +enum TypeWindowModel +{ + CHARTLINE, + CHARTCURVE, + CHARTBAR, + CHARTBAR1, + CHARTBAR2, + CHARTBAR3, + CHARTBAR4, + CHARTBAR5 +}; + +class TypeWindow : public BaseWidget +{ + Q_OBJECT +public: + TypeWindow(QWidget* parent = nullptr); + ~TypeWindow(); + + QPushButton* GetLeftButton(QString name); + +private: + void Init(); + QWidget* InitWidget(TypeWindowModel); +}; + +#endif //_TYPE_WINDOW_H_ diff --git a/Src/Model/LoadDistributionModelDelegate.cpp b/Src/Model/LoadDistributionModelDelegate.cpp new file mode 100644 index 0000000..0778a3d --- /dev/null +++ b/Src/Model/LoadDistributionModelDelegate.cpp @@ -0,0 +1,275 @@ +#include "LoadDistributionModelDelegate.h" +#include +#include + +LoadDistributionProModelItem::LoadDistributionProModelItem() +{ + +} + +LoadDistributionProModelItem::~LoadDistributionProModelItem() +{ + +} + + +LoadDistributionTableModel::LoadDistributionTableModel(QObject* parent) + :QAbstractTableModel (parent) +{ + +} + +LoadDistributionTableModel::~LoadDistributionTableModel() +{ + +} + +#if 0 +Qt::ItemFlags LoadDistributionTableModel::flags(const QModelIndex &index) const +{ + if(index.column() != 0) + return Qt::ItemIsEditable | Qt::ItemIsSelectable | QAbstractTableModel::flags(index); + return QAbstractTableModel::flags(index); +} +#endif + +int LoadDistributionTableModel::rowCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return Ary_row_List.size(); +} +int LoadDistributionTableModel::columnCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return 8; +} +QVariant LoadDistributionTableModel::data(const QModelIndex &index, int role) const +{ + if(Ary_row_List.size() < 1 || !index.isValid()) + return QVariant(); + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(index.column() == 0) + { + return Ary_row_List.at(index.row()).GetNumNo(); + } + else if(index.column() == 1) + { + return Ary_row_List.at(index.row()).GetTime1(); + } + else if(index.column() == 2) + { + return Ary_row_List.at(index.row()).GetTime2(); + } + else if(index.column() == 3) + { + return Ary_row_List.at(index.row()).GetTime3(); + } + else if(index.column() == 4) + { + return Ary_row_List.at(index.row()).GetTime4(); + } + else if(index.column() == 5) + { + return Ary_row_List.at(index.row()).GetTime5(); + } + else if(index.column() == 6) + { + return Ary_row_List.at(index.row()).GetTime6(); + } + else if(index.column() == 7) + { + return Ary_row_List.at(index.row()).GetTime7(); + } + } + return QVariant(); +} +QVariant LoadDistributionTableModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(orientation == Qt::Horizontal) + { + if(horizontal_header_list.size() > section) + return horizontal_header_list[section]; + else + return QVariant(); + } + if(orientation == Qt::Vertical) + { + if(vertical_header_list.size() > section) + return vertical_header_list[section]; + else + return QVariant(); + } + } + return QAbstractTableModel::headerData(section, orientation, role); +} + +void LoadDistributionTableModel::setHorizontalHeaderList(QStringList hHeadList) +{ + horizontal_header_list = hHeadList; +} + +void LoadDistributionTableModel::setVerticalHeaderList(QStringList VHeadList) +{ + vertical_header_list = VHeadList; +} + +void LoadDistributionTableModel::RefrushModel(LoadDistributionProModelItem item) +{ + const int count = Ary_row_List.size(); + beginInsertRows(QModelIndex(), count, count); + Ary_row_List.push_back(item); + endInsertRows(); +} + +bool LoadDistributionTableModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + Q_UNUSED(value); + if(Ary_row_List.size() < 1 || !index.isValid()) + return false; + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { +#if 0 + if(index.column() == 0) + { + Ary_row_List->at(index.row())->Set_Name(value.toString()); + } + if(index.column() == 1) + { + Ary_row_List->at(index.row())->Set_FirstVal(value.toString()); + } + else if(index.column() == 2) + { + Ary_row_List->at(index.row())->Set_SecondVal(value.toString()); + } + else if(index.column() == 3) + { + Ary_row_List->at(index.row())->Set_ThirdVal(value.toString()); + } + else if(index.column() == 4) + { + Ary_row_List->at(index.row())->Set_FourVal(value.toString()); + } + emit ModityData(index.row(),index.column(),value); +#endif + + return true; + } + return false; +} + +void LoadDistributionTableModel::PushBackData(QList list) +{ + if(list.size() <= 0) + { + return; + } + if(list.at(0).size() < 7) + { + return; + } + for(int i = 0; i < list.size(); i++) + { + LoadDistributionProModelItem Item; + const QString null = ""; + Item.SetNumNo(list.at(i).at(0).isEmpty() ? null : list.at(i).at(0)); + Item.SetTime1(list.at(i).at(1).isEmpty() ? null : list.at(i).at(1)); + Item.SetTime2(list.at(i).at(2).isEmpty() ? null : list.at(i).at(2)); + Item.SetTime3(list.at(i).at(3).isEmpty() ? null : list.at(i).at(3)); + Item.SetTime4(list.at(i).at(4).isEmpty() ? null : list.at(i).at(4)); + Item.SetTime5(list.at(i).at(5).isEmpty() ? null : list.at(i).at(5)); + Item.SetTime6(list.at(i).at(6).isEmpty() ? null : list.at(i).at(6)); + Item.SetTime7(list.at(i).at(7).isEmpty() ? null : list.at(i).at(7)); + Ary_row_List.push_back(Item); + } + + RefrushModelData(); +} + +//void LoadDistributionTableModel::PopBackData() +//{ +// for(int i = 0; i < Ary_row_List.size(); i++) +// { +// Ary_row_List.removeAt(0); +// } +// Ary_row_List.clear(); +// RefrushModelData(); +//} + +void LoadDistributionTableModel::RefrushModelData() +{ + this->beginResetModel(); + + this->endResetModel(); +} + +LoadDistributionModelDelegate::LoadDistributionModelDelegate(QObject *parent) + :QItemDelegate (parent) +{ + +} + +LoadDistributionModelDelegate::~LoadDistributionModelDelegate() +{ + +} + +void LoadDistributionModelDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + if(index.column() == 0 || index.column() == 1 || index.column() == 2 || index.column() == 3 || index.column() == 4 + || index.column() == 5 || index.column() == 6 || index.column() == 7) + { + painter->setPen(QPen(QColor(255,255,255))); + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } +#if 0 + else if(index.column() == 1) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 2) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 3) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 4) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } +#endif + else + { + QItemDelegate::paint(painter,option,index); + } +} + diff --git a/Src/Model/LoadDistributionModelDelegate.h b/Src/Model/LoadDistributionModelDelegate.h new file mode 100644 index 0000000..4abea35 --- /dev/null +++ b/Src/Model/LoadDistributionModelDelegate.h @@ -0,0 +1,137 @@ +#ifndef _LOAD_DISTRIBUTION_MODEL_DELEGATE_H_ +#define _LOAD_DISTRIBUTION_MODEL_DELEGATE_H_ + +#include +#include +#include + +class LoadDistributionProModelItem +{ +public: + LoadDistributionProModelItem(); + ~LoadDistributionProModelItem(); + + QString GetNumNo() const + { + return _numNo; + } + void SetNumNo(const QString numNo) + { + _numNo = numNo; + } + + QString GetTime1() const + { + return _time1; + } + void SetTime1(const QString time) + { + _time1 = time; + } + + QString GetTime2() const + { + return _time2; + } + void SetTime2(const QString time) + { + _time2 = time; + } + + QString GetTime3() const + { + return _time3; + } + void SetTime3(const QString time) + { + _time3 = time; + } + + QString GetTime4() const + { + return _time4; + } + void SetTime4(const QString time) + { + _time4 = time; + } + + QString GetTime5() const + { + return _time1; + } + void SetTime5(const QString time) + { + _time1 = time; + } + + QString GetTime6() const + { + return _time1; + } + void SetTime6(const QString time) + { + _time1 = time; + } + + QString GetTime7() const + { + return _time1; + } + void SetTime7(const QString time) + { + _time1 = time; + } + +private: + QString _numNo; + QString _time1; + QString _time2; + QString _time3; + QString _time4; + QString _time5; + QString _time6; + QString _time7; +}; + +class LoadDistributionTableModel: public QAbstractTableModel +{ + Q_OBJECT +public: + LoadDistributionTableModel(QObject* parent = nullptr); + ~LoadDistributionTableModel(); + +// Qt::ItemFlags flags(const QModelIndex &index) const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); + void RefrushModel(LoadDistributionProModelItem); + void setHorizontalHeaderList(QStringList hHeadList); + void setVerticalHeaderList(QStringList VHeadList); + void RefrushModelData(); + void PushBackData(QList); +// void PopBackData(); + +signals: + void ModityData(int,int,QVariant); +private: + QStringList horizontal_header_list; + QStringList vertical_header_list; + QList Ary_row_List; +}; + +class LoadDistributionModelDelegate : public QItemDelegate +{ + Q_OBJECT +public: + explicit LoadDistributionModelDelegate(QObject *parent = nullptr); + virtual ~LoadDistributionModelDelegate(); + + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; +private: +}; + + +#endif //_LOAD_DISTRIBUTION_MODEL_DELEGATE_H_ diff --git a/Src/Model/LoadDistributionTableView.cpp b/Src/Model/LoadDistributionTableView.cpp new file mode 100644 index 0000000..6a5a5a0 --- /dev/null +++ b/Src/Model/LoadDistributionTableView.cpp @@ -0,0 +1,184 @@ +#include +#include +#include +#include +#include +#include + +#include "LoadDistributionTableView.h" +#include "LoadDistributionModelDelegate.h" + +LoadDistributionTableView::LoadDistributionTableView(QWidget* parent/* = nullptr*/) + :QTableView(parent) +{ + this->setMouseTracking(true); + const QStringList horHeadList = (QStringList() << "工序" << "4月1号" << "4月2号" << "4月3号"<< "4月4号" << "4月5号" << "4月6号" << "4月7号"); + LoadDistributionTableModel* tableModel = new LoadDistributionTableModel(this); + tableModel->setObjectName("Model"); + LoadDistributionModelDelegate* tableDelegate = new LoadDistributionModelDelegate(this); + tableDelegate->setObjectName("Delegate"); + this->setModel(tableModel); + this->setItemDelegate(tableDelegate); + + tableModel->setHorizontalHeaderList(horHeadList); + this->setSelectionBehavior( QAbstractItemView::SelectRows); + + + //显示子网格 + this->setShowGrid(true); + //取消进度条 + this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + //设置默认高度 + this->verticalHeader()->setDefaultSectionSize(23); + //设置表头高度 + this->horizontalHeader()->setFixedHeight(25); + + this->setColumnWidth(0,70); + this->setColumnWidth(1,100); + this->setColumnWidth(2,100); + this->setColumnWidth(3,100); + this->setColumnWidth(4,100); + this->setColumnWidth(5,100); + this->setColumnWidth(6,100); + this->setColumnWidth(7,100); + + this->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); + this->verticalHeader()->hide(); + + this->horizontalHeader()->setStyleSheet("QHeaderView::section " + "{" + "color:rgb(0,170,190);" + "background-color:rgb(48,48,88);" + "border-left:none;" + "border-bottom:1px solid rgb(40,40,40,150);" + "border-top:1px solid rgb(40,40,40,150);" + "border-right:1px solid rgb(40,40,40,150);}"); + this->setStyleSheet("background-color:rgb(48,48,88);" + "border:none;"); + + +// this->connect(this->verticalScrollBar(),&QScrollBar::valueChanged,this,[=](int value){ +// if(value + 13 < _max) +// { +// if(value == this->verticalScrollBar()->maximum()) +// { +// _row += 1; +// emit RefrushData(_row); +// } +// } +// }); + + //设置行列表头无法点击 + this->setCornerButtonEnabled(false); + this->horizontalHeader()->setSectionsClickable(false); + +} + +LoadDistributionTableView::~LoadDistributionTableView() +{ + +} + +void LoadDistributionTableView::Set_Model_Data(QList data) +{ + LoadDistributionTableModel* tableModel = this->findChild("Model"); + tableModel->PushBackData(data); +} + + + +#if 0 +QString LoadDistributionTableView::Get_ModelData(const int row, const int Col) const +{ + LoadDistributionTableModel* tableModel = this->findChild("Model"); + const QModelIndex index = tableModel->index(row,Col); + const QString value = this->model()->data(index).toString(); + + return value; +} +void LoadDistributionTableView::Pop_Model_Data() +{ + this->verticalScrollBar()->setValue(0); + LoadDistributionTableModel* tableModel = this->findChild("Model"); + tableModel->PopBackData(); + _row = 0; +} +void LoadDistributionTableView::mousePressEvent(QMouseEvent *event) +{ + MoldProModelDelegate* tableDelegate = this->findChild("Delegate"); + LoadDistributionTableModel* tableModel = this->findChild("Model"); + int row = indexAt(event->pos()).row(); + if(row >= 0) + { + tableDelegate->Set_ClickedRow(row); + } + else + { + tableDelegate->Set_ClickedRow(-1); + } + tableModel->RefrushModelData(); + + + return QTableView::mousePressEvent(event); +} +#endif + +#if 0 +void ClickedRow(int Row); +void LoadDistributionTableView::ClickedRow(int Row) +{ + const QModelIndex index = this->model()->index(Row,0); + this->clicked(index); +} + +#if 0 +void ChangePaint(QString,QString,QString); +bool Get_RowInfo(QStringList&); +bool LoadDistributionTableView::Get_RowInfo(QStringList& value) +{ + DBDataModelDelegate* tableDelegate = this->findChild("Delegate"); + LoadDistributionTableModel* tableModel = this->findChild("Model"); + const int ClickedRow = tableDelegate->Get_ClickedRow(); + if(ClickedRow == -1) + { + return false; + } +#if 0 + const QModelIndex nameIndex = tableModel->index(ClickedRow,7); + const QModelIndex codeIndex = tableModel->index(ClickedRow,9); + const QModelIndex TypeIndex = tableModel->index(ClickedRow,8); + //层位 + const QModelIndex DiskIndex = tableModel->index(ClickedRow,2); + const QModelIndex WorkIndex = tableModel->index(ClickedRow,3); + const QModelIndex ResultIndex = tableModel->index(ClickedRow,10); + const QModelIndex ActionIndex = tableModel->index(ClickedRow,6); + const QModelIndex TimeIndex = tableModel->index(ClickedRow,14); + + const QString nameValue = this->model()->data(nameIndex).toString(); + const QString codeValue = this->model()->data(codeIndex).toString(); + const QString typeValue = this->model()->data(TypeIndex).toString(); + const QString diskValue = this->model()->data(DiskIndex).toString(); + const QString workValue = this->model()->data(WorkIndex).toString(); + const QString resultValue = this->model()->data(ResultIndex).toString(); + const QString actionValue = this->model()->data(ActionIndex).toString(); + const QString timeValue = this->model()->data(TimeIndex).toString(); +#endif + + const QString nameValue = Get_ModelData(ClickedRow,7); + const QString codeValue = Get_ModelData(ClickedRow,9); + const QString typeValue = Get_ModelData(ClickedRow,8); + const QString frameValue = Get_ModelData(ClickedRow,1); + const QString diskValue = Get_ModelData(ClickedRow,2); + const QString workValue = Get_ModelData(ClickedRow,3); + const QString resultValue = Get_ModelData(ClickedRow,10); + const QString actionValue = Get_ModelData(ClickedRow,6); + const QString timeValue = Get_ModelData(ClickedRow,14); + + value << nameValue << codeValue << typeValue << frameValue << diskValue << workValue << resultValue << actionValue << timeValue; + + return true; +} +#endif + +#endif diff --git a/Src/Model/LoadDistributionTableView.h b/Src/Model/LoadDistributionTableView.h new file mode 100644 index 0000000..d4edacc --- /dev/null +++ b/Src/Model/LoadDistributionTableView.h @@ -0,0 +1,39 @@ +#ifndef LOAD_DISTRIBUTION_TABLE_VIEW_H_ +#define LOAD_DISTRIBUTION_TABLE_VIEW_H_ + +#include +#include + +class QTableView; +class LoadDistributionTableView : public QTableView +{ + Q_OBJECT +public: + //SettingFourValTableView(QStringList HorList,int TableMaxNum,int NameWidth,int TableWidth,int DefaultHeight,int TableHeight,QWidget* parent = nullptr); + LoadDistributionTableView(QWidget* parent = nullptr); + ~LoadDistributionTableView(); + + void Set_Model_Data(QList data); +// void Pop_Model_Data(); +// QString Get_ModelData(const int row,const int Col) const; +// void mousePressEvent(QMouseEvent *event); + + int Get_Row() const + { + return _row; + } + void Set_Max(int max) + { + _max = max; + } +signals: + void TableModityData(int,int,QVariant); + void RefrushData(int Row); + +private: + int _row = 0; + int _max = 0; +}; + + +#endif //LOAD_DISTRIBUTION_TABLE_VIEW_H_ diff --git a/Src/Model/MoldProModelDelegate.cpp b/Src/Model/MoldProModelDelegate.cpp new file mode 100644 index 0000000..8b38c93 --- /dev/null +++ b/Src/Model/MoldProModelDelegate.cpp @@ -0,0 +1,312 @@ +#include "MoldProModelDelegate.h" +#include +#include + +MoldProModelItem::MoldProModelItem() +{ + +} + +MoldProModelItem::~MoldProModelItem() +{ + +} + +MoldProTableModel::MoldProTableModel(QObject* parent) + :QAbstractTableModel (parent) +{ + +} + +MoldProTableModel::~MoldProTableModel() +{ + +} + +#if 0 +Qt::ItemFlags MoldProTableModel::flags(const QModelIndex &index) const +{ + if(index.column() != 0) + return Qt::ItemIsEditable | Qt::ItemIsSelectable | QAbstractTableModel::flags(index); + return QAbstractTableModel::flags(index); +} +#endif + +int MoldProTableModel::rowCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return Ary_row_List.size(); +} +int MoldProTableModel::columnCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return 8; +} +QVariant MoldProTableModel::data(const QModelIndex &index, int role) const +{ + if(Ary_row_List.size() < 1 || !index.isValid()) + return QVariant(); + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(index.column() == 0) + { + return Ary_row_List.at(index.row()).GetId(); + } + else if(index.column() == 1) + { + return Ary_row_List.at(index.row()).GetNumNo(); + } + else if(index.column() == 2) + { + return Ary_row_List.at(index.row()).GetVersion(); + } + else if(index.column() == 3) + { + return Ary_row_List.at(index.row()).GetType(); + } + else if(index.column() == 4) + { + return Ary_row_List.at(index.row()).GetState(); + } + else if(index.column() == 5) + { + return Ary_row_List.at(index.row()).GetName(); + } + else if(index.column() == 6) + { + return Ary_row_List.at(index.row()).GetTime(); + } + else if(index.column() == 7) + { + return Ary_row_List.at(index.row()).GetList(); + } + } + return QVariant(); +} +QVariant MoldProTableModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(orientation == Qt::Horizontal) + { + if(horizontal_header_list.size() > section) + return horizontal_header_list[section]; + else + return QVariant(); + } + if(orientation == Qt::Vertical) + { + if(vertical_header_list.size() > section) + return vertical_header_list[section]; + else + return QVariant(); + } + } + return QAbstractTableModel::headerData(section, orientation, role); +} + +void MoldProTableModel::setHorizontalHeaderList(QStringList hHeadList) +{ + horizontal_header_list = hHeadList; +} + +void MoldProTableModel::setVerticalHeaderList(QStringList VHeadList) +{ + vertical_header_list = VHeadList; +} + +void MoldProTableModel::RefrushModel(MoldProModelItem item) +{ + const int count = Ary_row_List.size(); + beginInsertRows(QModelIndex(), count, count); + Ary_row_List.push_back(item); + endInsertRows(); +} + +bool MoldProTableModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + Q_UNUSED(value); + if(Ary_row_List.size() < 1 || !index.isValid()) + return false; + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { +#if 0 + if(index.column() == 0) + { + Ary_row_List->at(index.row())->Set_Name(value.toString()); + } + if(index.column() == 1) + { + Ary_row_List->at(index.row())->Set_FirstVal(value.toString()); + } + else if(index.column() == 2) + { + Ary_row_List->at(index.row())->Set_SecondVal(value.toString()); + } + else if(index.column() == 3) + { + Ary_row_List->at(index.row())->Set_ThirdVal(value.toString()); + } + else if(index.column() == 4) + { + Ary_row_List->at(index.row())->Set_FourVal(value.toString()); + } + emit ModityData(index.row(),index.column(),value); +#endif + + return true; + } + return false; +} + +void MoldProTableModel::PushBackData(QList list,QList valueList) +{ + if(list.size() <= 0 || valueList.size() <= 0) + { + return; + } + if(list.at(0).size() < 7) + { + return; + } + if(list.size() != valueList.size()) + { + return; + } + for(int i = 0; i < list.size(); i++) + { + MoldProModelItem Item; + const QString null = ""; + Item.SetId(list.at(i).at(0).isEmpty() ? null : list.at(i).at(0)); + Item.SetNumNo(list.at(i).at(1).isEmpty() ? null : list.at(i).at(1)); + Item.SetVersion(list.at(i).at(2).isEmpty() ? null : list.at(i).at(2)); + Item.SetType(list.at(i).at(3).isEmpty() ? null : list.at(i).at(3)); + Item.SetState(list.at(i).at(4).isEmpty() ? null : list.at(i).at(4)); + Item.SetName(list.at(i).at(5).isEmpty() ? null : list.at(i).at(5)); + Item.SetTime(list.at(i).at(6).isEmpty() ? null : list.at(i).at(6)); + Item.SetList(valueList.at(i)); + Ary_row_List.push_back(Item); + } + + RefrushModelData(); +} + +//void MoldProTableModel::PopBackData() +//{ +// for(int i = 0; i < Ary_row_List.size(); i++) +// { +// Ary_row_List.removeAt(0); +// } +// Ary_row_List.clear(); +// RefrushModelData(); +//} + +void MoldProTableModel::RefrushModelData() +{ + this->beginResetModel(); + + this->endResetModel(); +} + +MoldProModelDelegate::MoldProModelDelegate(QObject *parent) + :QItemDelegate (parent) +{ + +} + +MoldProModelDelegate::~MoldProModelDelegate() +{ + +} + +void MoldProModelDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + if(index.column() == 0 || index.column() == 1 || index.column() == 2 || index.column() == 3 || index.column() == 4 + || index.column() == 5 || index.column() == 6) + { +// painter->setPen(QPen(QColor(0,0,0))); +// if(index.row() == ClickedRow) +// { +// painter->setBrush(QColor(0,0,50)); +// painter->setPen(QPen(QColor(255,255,255))); +// painter->drawRect(option.rect); +// } + painter->setPen(QPen(QColor(255,255,255))); + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 7) + { + QVariantList list = index.model()->data(index,Qt::DisplayRole).toList(); + int total = 0; + for(auto& i : list) + { + total += i.toInt(); + } + float pro = (float)option.rect.width() / float(total); + QList proList; + for(int i = 0; i < list.size(); i++) + { + const float Pro = list.at(i).toFloat() * pro; + proList.push_back(Pro); + } + QList colorList = QList() << QColor(0,176,180) << QColor(255,192,0) << QColor(214,77,84); + float proX = 0.0f; + for(int i = 0; i setPen(QPen(colorList.at(i))); + painter->setBrush(QBrush(colorList.at(i))); + const int height = 10; + int y = option.rect.y() + (option.rect.height() / 2) - (height / 2); + painter->drawRect(option.rect.x() + proX,y,proList.at(i),height); + proX += proList.at(i); + } + } +#if 0 + else if(index.column() == 1) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 2) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 3) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + else if(index.column() == 4) + { + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } +#endif + else + { + QItemDelegate::paint(painter,option,index); + } +} + diff --git a/Src/Model/MoldProModelDelegate.h b/Src/Model/MoldProModelDelegate.h new file mode 100644 index 0000000..2e859ce --- /dev/null +++ b/Src/Model/MoldProModelDelegate.h @@ -0,0 +1,137 @@ +#ifndef MOLD_PRO_MODEL_DELEGATE_H_ +#define MOLD_PRO_MODEL_DELEGATE_H_ + +#include +#include +#include + +class MoldProModelItem +{ +public: + MoldProModelItem(); + ~MoldProModelItem(); + + QString GetId() const + { + return _id; + } + void SetId(QString id) + { + _id = id; + } + + QString GetNumNo() const + { + return _numNo; + } + void SetNumNo(const QString numNo) + { + _numNo = numNo; + } + + QString GetVersion() const + { + return _version; + } + void SetVersion(QString version) + { + _version = version; + } + + QString GetType() const + { + return _type; + } + void SetType(QString type) + { + _type = type; + } + + QString GetState() const + { + return _state; + } + void SetState(QString state) + { + _state = state; + } + + QString GetName() const + { + return _name; + } + void SetName(QString name) + { + _name = name; + } + + QString GetTime() const + { + return _time; + } + void SetTime(QString time) + { + _time = time; + } + + QVariantList GetList() const + { + return _progressList; + } + void SetList(QVariantList list) + { + _progressList = list; + } + +private: + QString _id; + QString _numNo; + QString _version; + QString _type; + QString _state; + QString _name; + QString _time; + QVariantList _progressList; +}; + +class MoldProTableModel: public QAbstractTableModel +{ + Q_OBJECT +public: + MoldProTableModel(QObject* parent = nullptr); + ~MoldProTableModel(); + +// Qt::ItemFlags flags(const QModelIndex &index) const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); + void RefrushModel(MoldProModelItem); + void setHorizontalHeaderList(QStringList hHeadList); + void setVerticalHeaderList(QStringList VHeadList); + void RefrushModelData(); + void PushBackData(QList,QList); + void PopBackData(); + +signals: + void ModityData(int,int,QVariant); +private: + QStringList horizontal_header_list; + QStringList vertical_header_list; + QList Ary_row_List; +}; + +class MoldProModelDelegate : public QItemDelegate +{ + Q_OBJECT +public: + explicit MoldProModelDelegate(QObject *parent = nullptr); + virtual ~MoldProModelDelegate(); + + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; +private: +}; + + +#endif //MOLD_PRO_MODEL_DELEGATE_H_ diff --git a/Src/Model/MoldProTableView.cpp b/Src/Model/MoldProTableView.cpp new file mode 100644 index 0000000..ee5c137 --- /dev/null +++ b/Src/Model/MoldProTableView.cpp @@ -0,0 +1,184 @@ +#include +#include +#include +#include +#include +#include + +#include "MoldProTableView.h" +#include "MoldProModelDelegate.h" + +MoldProTableView::MoldProTableView(QWidget* parent/* = nullptr*/) + :QTableView(parent) +{ + this->setMouseTracking(true); + const QStringList horHeadList = (QStringList() << "序号" << "模具编号" << "版本号" << "类型"<< "状态" << "产品名称" << "计划交期" << "当前进度"); + MoldProTableModel* tableModel = new MoldProTableModel(this); + tableModel->setObjectName("Model"); + MoldProModelDelegate* tableDelegate = new MoldProModelDelegate(this); + tableDelegate->setObjectName("Delegate"); + this->setModel(tableModel); + this->setItemDelegate(tableDelegate); + + tableModel->setHorizontalHeaderList(horHeadList); + this->setSelectionBehavior( QAbstractItemView::SelectRows); + + + //显示子网格 + this->setShowGrid(true); + //取消进度条 + this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + //设置默认高度 + this->verticalHeader()->setDefaultSectionSize(23); + //设置表头高度 + this->horizontalHeader()->setFixedHeight(25); + + this->setColumnWidth(0,40); + this->setColumnWidth(1,70); + this->setColumnWidth(2,55); + this->setColumnWidth(3,55); + this->setColumnWidth(4,60); + this->setColumnWidth(5,60); + this->setColumnWidth(6,90); + this->setColumnWidth(7,130); + + this->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); + this->verticalHeader()->hide(); + + this->horizontalHeader()->setStyleSheet("QHeaderView::section " + "{" + "color:rgb(0,170,190);" + "background-color:rgb(48,48,88);" + "border-left:none;" + "border-bottom:1px solid rgb(40,40,40,150);" + "border-top:1px solid rgb(40,40,40,150);" + "border-right:1px solid rgb(40,40,40,150);}"); + this->setStyleSheet("background-color:rgb(48,48,88);" + "border:none;"); + + +// this->connect(this->verticalScrollBar(),&QScrollBar::valueChanged,this,[=](int value){ +// if(value + 13 < _max) +// { +// if(value == this->verticalScrollBar()->maximum()) +// { +// _row += 1; +// emit RefrushData(_row); +// } +// } +// }); + + //设置行列表头无法点击 + this->setCornerButtonEnabled(false); + this->horizontalHeader()->setSectionsClickable(false); + +} + +MoldProTableView::~MoldProTableView() +{ + +} + +void MoldProTableView::Set_Model_Data(QList data,QList list) +{ + MoldProTableModel* tableModel = this->findChild("Model"); + tableModel->PushBackData(data,list); +} + + + +#if 0 +QString MoldProTableView::Get_ModelData(const int row, const int Col) const +{ + MoldProTableModel* tableModel = this->findChild("Model"); + const QModelIndex index = tableModel->index(row,Col); + const QString value = this->model()->data(index).toString(); + + return value; +} +void MoldProTableView::Pop_Model_Data() +{ + this->verticalScrollBar()->setValue(0); + MoldProTableModel* tableModel = this->findChild("Model"); + tableModel->PopBackData(); + _row = 0; +} +void MoldProTableView::mousePressEvent(QMouseEvent *event) +{ + MoldProModelDelegate* tableDelegate = this->findChild("Delegate"); + MoldProTableModel* tableModel = this->findChild("Model"); + int row = indexAt(event->pos()).row(); + if(row >= 0) + { + tableDelegate->Set_ClickedRow(row); + } + else + { + tableDelegate->Set_ClickedRow(-1); + } + tableModel->RefrushModelData(); + + + return QTableView::mousePressEvent(event); +} +#endif + +#if 0 +void ClickedRow(int Row); +void MoldProTableView::ClickedRow(int Row) +{ + const QModelIndex index = this->model()->index(Row,0); + this->clicked(index); +} + +#if 0 +void ChangePaint(QString,QString,QString); +bool Get_RowInfo(QStringList&); +bool MoldProTableView::Get_RowInfo(QStringList& value) +{ + DBDataModelDelegate* tableDelegate = this->findChild("Delegate"); + MoldProTableModel* tableModel = this->findChild("Model"); + const int ClickedRow = tableDelegate->Get_ClickedRow(); + if(ClickedRow == -1) + { + return false; + } +#if 0 + const QModelIndex nameIndex = tableModel->index(ClickedRow,7); + const QModelIndex codeIndex = tableModel->index(ClickedRow,9); + const QModelIndex TypeIndex = tableModel->index(ClickedRow,8); + //层位 + const QModelIndex DiskIndex = tableModel->index(ClickedRow,2); + const QModelIndex WorkIndex = tableModel->index(ClickedRow,3); + const QModelIndex ResultIndex = tableModel->index(ClickedRow,10); + const QModelIndex ActionIndex = tableModel->index(ClickedRow,6); + const QModelIndex TimeIndex = tableModel->index(ClickedRow,14); + + const QString nameValue = this->model()->data(nameIndex).toString(); + const QString codeValue = this->model()->data(codeIndex).toString(); + const QString typeValue = this->model()->data(TypeIndex).toString(); + const QString diskValue = this->model()->data(DiskIndex).toString(); + const QString workValue = this->model()->data(WorkIndex).toString(); + const QString resultValue = this->model()->data(ResultIndex).toString(); + const QString actionValue = this->model()->data(ActionIndex).toString(); + const QString timeValue = this->model()->data(TimeIndex).toString(); +#endif + + const QString nameValue = Get_ModelData(ClickedRow,7); + const QString codeValue = Get_ModelData(ClickedRow,9); + const QString typeValue = Get_ModelData(ClickedRow,8); + const QString frameValue = Get_ModelData(ClickedRow,1); + const QString diskValue = Get_ModelData(ClickedRow,2); + const QString workValue = Get_ModelData(ClickedRow,3); + const QString resultValue = Get_ModelData(ClickedRow,10); + const QString actionValue = Get_ModelData(ClickedRow,6); + const QString timeValue = Get_ModelData(ClickedRow,14); + + value << nameValue << codeValue << typeValue << frameValue << diskValue << workValue << resultValue << actionValue << timeValue; + + return true; +} +#endif + +#endif diff --git a/Src/Model/MoldProTableView.h b/Src/Model/MoldProTableView.h new file mode 100644 index 0000000..6e5a83a --- /dev/null +++ b/Src/Model/MoldProTableView.h @@ -0,0 +1,39 @@ +#ifndef MOLD_PRO_TABLE_VIEW +#define MOLD_PRO_TABLE_VIEW + +#include +#include + +class QTableView; +class MoldProTableView : public QTableView +{ + Q_OBJECT +public: + //SettingFourValTableView(QStringList HorList,int TableMaxNum,int NameWidth,int TableWidth,int DefaultHeight,int TableHeight,QWidget* parent = nullptr); + MoldProTableView(QWidget* parent = nullptr); + ~MoldProTableView(); + + void Set_Model_Data(QList data,QList list); +// void Pop_Model_Data(); +// QString Get_ModelData(const int row,const int Col) const; +// void mousePressEvent(QMouseEvent *event); + + int Get_Row() const + { + return _row; + } + void Set_Max(int max) + { + _max = max; + } +signals: + void TableModityData(int,int,QVariant); + void RefrushData(int Row); + +private: + int _row = 0; + int _max = 0; +}; + + +#endif //MOLD_PRO_TABLE_VIEW diff --git a/Src/Model/PartsInventoryModelDelegate.cpp b/Src/Model/PartsInventoryModelDelegate.cpp new file mode 100644 index 0000000..f40256b --- /dev/null +++ b/Src/Model/PartsInventoryModelDelegate.cpp @@ -0,0 +1,278 @@ +#include "PartsInventoryModelDelegate.h" +#include +#include + +PartsInventoryModelItem::PartsInventoryModelItem() +{ + +} + +PartsInventoryModelItem::~PartsInventoryModelItem() +{ + +} + +PartsInventoryTableModel::PartsInventoryTableModel(QObject* parent) + :QAbstractTableModel (parent) +{ + +} + +PartsInventoryTableModel::~PartsInventoryTableModel() +{ + +} + +#if 0 +Qt::ItemFlags PartsInventoryTableModel::flags(const QModelIndex &index) const +{ + if(index.column() != 0) + return Qt::ItemIsEditable | Qt::ItemIsSelectable | QAbstractTableModel::flags(index); + return QAbstractTableModel::flags(index); +} +#endif + +int PartsInventoryTableModel::rowCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return Ary_row_List.size(); +} +int PartsInventoryTableModel::columnCount(const QModelIndex &parent) const +{ + if(parent.isValid()) + return 0; + return 10; +} +QVariant PartsInventoryTableModel::data(const QModelIndex &index, int role) const +{ + if(Ary_row_List.size() < 1 || !index.isValid()) + return QVariant(); + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(index.column() == 0) + { + return Ary_row_List.at(index.row()).GetId(); + } + else if(index.column() == 1) + { + return Ary_row_List.at(index.row()).GetNumNo(); + } + else if(index.column() == 2) + { + return Ary_row_List.at(index.row()).GetName(); + } + else if(index.column() == 3) + { + return Ary_row_List.at(index.row()).GetSpecification(); + } + else if(index.column() == 4) + { + return Ary_row_List.at(index.row()).GetMaterial(); + } + else if(index.column() == 5) + { + return Ary_row_List.at(index.row()).GetSize(); + } + else if(index.column() == 6) + { + return Ary_row_List.at(index.row()).GetRepositories(); + } + else if(index.column() == 7) + { + return Ary_row_List.at(index.row()).GetRemainder(); + } + else if(index.column() == 8) + { + return Ary_row_List.at(index.row()).GetPercentage(); + } + else if(index.column() == 9) + { + return Ary_row_List.at(index.row()).GetList(); + } + } + return QVariant(); +} +QVariant PartsInventoryTableModel::headerData(int section, Qt::Orientation orientation, int role) const +{ + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + if(orientation == Qt::Horizontal) + { + if(horizontal_header_list.size() > section) + return horizontal_header_list[section]; + else + return QVariant(); + } + if(orientation == Qt::Vertical) + { + if(vertical_header_list.size() > section) + return vertical_header_list[section]; + else + return QVariant(); + } + } + return QAbstractTableModel::headerData(section, orientation, role); +} + +void PartsInventoryTableModel::setHorizontalHeaderList(QStringList hHeadList) +{ + horizontal_header_list = hHeadList; +} + +void PartsInventoryTableModel::setVerticalHeaderList(QStringList VHeadList) +{ + vertical_header_list = VHeadList; +} + +void PartsInventoryTableModel::RefrushModel(PartsInventoryModelItem item) +{ + const int count = Ary_row_List.size(); + beginInsertRows(QModelIndex(), count, count); + Ary_row_List.push_back(item); + endInsertRows(); +} + +bool PartsInventoryTableModel::setData(const QModelIndex &index, const QVariant &value, int role) +{ + Q_UNUSED(value); + if(Ary_row_List.size() < 1 || !index.isValid()) + return false; + if (role == Qt::TextAlignmentRole) + { + return int (Qt::AlignHCenter | Qt::AlignVCenter); + } + if(role == Qt::DisplayRole || role == Qt::EditRole) + { + return true; + } + return false; +} + +void PartsInventoryTableModel::PushBackData(QList list,QList valueList) +{ + if(list.size() <= 0 || valueList.size() <= 0) + { + return; + } + if(list.at(0).size() < 9) + { + return; + } + if(list.size() != valueList.size()) + { + return; + } + for(int i = 0; i < list.size(); i++) + { + PartsInventoryModelItem Item; + const QString null = ""; + Item.SetId(list.at(i).at(0).isEmpty() ? null : list.at(i).at(0)); + Item.SetNumNo(list.at(i).at(1).isEmpty() ? null : list.at(i).at(1)); + Item.SetName(list.at(i).at(2).isEmpty() ? null : list.at(i).at(2)); + Item.SetSpecification(list.at(i).at(3).isEmpty() ? null : list.at(i).at(3)); + Item.SetMaterial(list.at(i).at(4).isEmpty() ? null : list.at(i).at(4)); + Item.SetSize(list.at(i).at(5).isEmpty() ? null : list.at(i).at(5)); + Item.SetRepositories(list.at(i).at(6).isEmpty() ? null : list.at(i).at(6)); + Item.SetRemainder(list.at(i).at(7).isEmpty() ? null : list.at(i).at(7)); + Item.SetPercentage(list.at(i).at(8).isEmpty() ? null : list.at(i).at(8)); + Item.SetList(valueList.at(i)); + Ary_row_List.push_back(Item); + } + + RefrushModelData(); +} + +//void PartsInventoryTableModel::PopBackData() +//{ +// for(int i = 0; i < Ary_row_List.size(); i++) +// { +// Ary_row_List.removeAt(0); +// } +// Ary_row_List.clear(); +// RefrushModelData(); +//} + +void PartsInventoryTableModel::RefrushModelData() +{ + this->beginResetModel(); + + this->endResetModel(); +} + +PartsInventoryModelDelegate::PartsInventoryModelDelegate(QObject *parent) + :QItemDelegate (parent) +{ + +} + +PartsInventoryModelDelegate::~PartsInventoryModelDelegate() +{ + +} + +void PartsInventoryModelDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + if(index.column() == 0 || index.column() == 1 || index.column() == 2 || index.column() == 3 || index.column() == 4 + || index.column() == 5 || index.column() == 6 || index.column() == 7 || index.column() == 8) + { + painter->setPen(QPen(QColor(255,255,255))); + QString mos = index.model()->data(index,Qt::DisplayRole).toString(); + QTextOption o; + o.setAlignment(Qt::AlignCenter); + painter->drawText(option.rect,mos,o); + } + if(index.column() == 9) + { + painter->save(); + painter->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); + QVariantList valueList = index.model()->data(index,Qt::DisplayRole).toList(); + int radius = option.rect.height() / 2; + +// QFont font; +// font.setPixelSize(option.rect.height() * 0.9); +// painter->setFont(font); + const int value1 = valueList.at(0).toInt(); + const int value2 = valueList.at(1).toInt(); + const int sum = value1 + value2; + const double percent1 = (double)value1 / (double)sum; + const double percent2 = (double)value2 / (double)sum; + const int width1 = option.rect.width() * percent1; + const int width2 = option.rect.width() * percent2; + const QString text1 = QString("%1%").arg(QString::number(percent1 * 100, 'f', 0)); + const QString text2 = QString("%1%").arg(QString::number(percent2 * 100, 'f', 0)); + + painter->setPen(Qt::NoPen); + painter->setBrush(QColor(0,255,0)); + + //计算绘制的区域,需要裁剪圆角部分 + QPainterPath clipPath1; + clipPath1.addRoundedRect(option.rect, radius, radius); + painter->setClipPath(clipPath1); + QRect rect1(option.rect.x(), option.rect.y(), width1,option.rect.height()); + painter->drawRect(rect1); + painter->setPen(QColor(255,255,255)); + painter->drawText(rect1, Qt::AlignCenter, text1); + + painter->setPen(Qt::NoPen); + painter->setBrush(QColor(255,0,0)); + + QPainterPath clipPath2; + clipPath2.addRoundedRect(option.rect, radius, radius); + painter->setClipPath(clipPath2); + QRect rect2(option.rect.x() + width1, option.rect.y(), width2,option.rect.height()); + painter->drawRect(rect2); + painter->setPen(QColor(255,255,255)); + painter->drawText(rect2, Qt::AlignCenter, text2); + painter->restore(); + } +// else +// { +// QItemDelegate::paint(painter,option,index); +// } +} + diff --git a/Src/Model/PartsInventoryModelDelegate.h b/Src/Model/PartsInventoryModelDelegate.h new file mode 100644 index 0000000..6c36c2f --- /dev/null +++ b/Src/Model/PartsInventoryModelDelegate.h @@ -0,0 +1,157 @@ +#ifndef PARTS_INVENTORY_MODEL_DELEGATE_H_ +#define PARTS_INVENTORY_MODEL_DELEGATE_H_ + +#include +#include +#include + +class PartsInventoryModelItem +{ +public: + PartsInventoryModelItem(); + ~PartsInventoryModelItem(); + + QString GetId() const + { + return _id; + } + void SetId(QString id) + { + _id = id; + } + + QString GetNumNo() const + { + return _numNo; + } + void SetNumNo(const QString numNo) + { + _numNo = numNo; + } + + QString GetName() const + { + return _name; + } + void SetName(QString name) + { + _name = name; + } + + QString GetSpecification() const + { + return _specification; + } + void SetSpecification(QString specification) + { + _specification = specification; + } + + QString GetMaterial() const + { + return _material; + } + void SetMaterial(QString Material) + { + _material = Material; + } + + QString GetSize() const + { + return _size; + } + void SetSize(QString size) + { + _size = size; + } + + QString GetRepositories() const + { + return _repositories; + } + void SetRepositories(QString Repositories) + { + _repositories = Repositories; + } + + QString GetRemainder() const + { + return _repositories; + } + void SetRemainder(QString Remainder) + { + _remainder = Remainder; + } + + QString GetPercentage() const + { + return _percentage; + } + void SetPercentage(QString Percentage) + { + _percentage = Percentage; + } + + QVariantList GetList() const + { + return _progressList; + } + void SetList(QVariantList list) + { + _progressList = list; + } + +private: + QString _id; + QString _numNo; + QString _name; + QString _specification; + QString _material; + QString _size; + QString _repositories; + QString _remainder; + QString _percentage; + QVariantList _progressList; +}; + +class PartsInventoryTableModel: public QAbstractTableModel +{ + Q_OBJECT +public: + PartsInventoryTableModel(QObject* parent = nullptr); + ~PartsInventoryTableModel(); + +// Qt::ItemFlags flags(const QModelIndex &index) const; + int rowCount(const QModelIndex &parent = QModelIndex()) const; + int columnCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::DisplayRole); + void RefrushModel(PartsInventoryModelItem); + void setHorizontalHeaderList(QStringList hHeadList); + void setVerticalHeaderList(QStringList VHeadList); + void RefrushModelData(); + void PushBackData(QList,QList); + void PopBackData(); + +signals: + void ModityData(int,int,QVariant); +private: + QStringList horizontal_header_list; + QStringList vertical_header_list; + QList Ary_row_List; +}; + +class PartsInventoryModelDelegate : public QItemDelegate +{ + Q_OBJECT +public: + explicit PartsInventoryModelDelegate(QObject *parent = nullptr); + virtual ~PartsInventoryModelDelegate(); + + virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; +private: +}; + + +#endif //PARTS_INVENTORY_MODEL_DELEGATE_H_ diff --git a/Src/Model/PartsInventoryTableView.cpp b/Src/Model/PartsInventoryTableView.cpp new file mode 100644 index 0000000..584021d --- /dev/null +++ b/Src/Model/PartsInventoryTableView.cpp @@ -0,0 +1,76 @@ +#include +#include +#include +#include +#include +#include + +#include "PartsInventoryModelDelegate.h" +#include "PartsInventoryTableView.h" + +PartsInventoryTableView::PartsInventoryTableView(QWidget* parent/* = nullptr*/) + :QTableView(parent) +{ + this->setMouseTracking(true); + const QStringList horHeadList = (QStringList() << "序号" << "模具编号" << "品名" << "规格"<< "材料" << "尺寸" << "目标存库" << "当前库存" << "库存百分比" << "预警"); + PartsInventoryTableModel* tableModel = new PartsInventoryTableModel(this); + tableModel->setObjectName("Model"); + PartsInventoryModelDelegate* tableDelegate = new PartsInventoryModelDelegate(this); + tableDelegate->setObjectName("Delegate"); + this->setModel(tableModel); + this->setItemDelegate(tableDelegate); + + tableModel->setHorizontalHeaderList(horHeadList); + this->setSelectionBehavior( QAbstractItemView::SelectRows); + + + //显示子网格 + this->setShowGrid(true); + //取消进度条 + this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + //设置默认高度 + this->verticalHeader()->setDefaultSectionSize(23); + //设置表头高度 + this->horizontalHeader()->setFixedHeight(25); + + this->setColumnWidth(0,40); + this->setColumnWidth(1,70); + this->setColumnWidth(2,70); + this->setColumnWidth(3,70); + this->setColumnWidth(4,70); + this->setColumnWidth(5,75); + this->setColumnWidth(6,75); + this->setColumnWidth(7,75); + this->setColumnWidth(8,75); + this->setColumnWidth(9,200); + + this->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); + this->verticalHeader()->hide(); + + this->horizontalHeader()->setStyleSheet("QHeaderView::section " + "{" + "color:rgb(0,170,190);" + "background-color:rgb(48,48,88);" + "border-left:none;" + "border-bottom:1px solid rgb(40,40,40,150);" + "border-top:1px solid rgb(40,40,40,150);" + "border-right:1px solid rgb(40,40,40,150);}"); + this->setStyleSheet("background-color:rgb(48,48,88);" + "border:none;"); + this->setCornerButtonEnabled(false); + this->horizontalHeader()->setSectionsClickable(false); + +} + +PartsInventoryTableView::~PartsInventoryTableView() +{ + +} + +void PartsInventoryTableView::Set_Model_Data(QList data,QList list) +{ + PartsInventoryTableModel* tableModel = this->findChild("Model"); + tableModel->PushBackData(data,list); +} + diff --git a/Src/Model/PartsInventoryTableView.h b/Src/Model/PartsInventoryTableView.h new file mode 100644 index 0000000..bccb977 --- /dev/null +++ b/Src/Model/PartsInventoryTableView.h @@ -0,0 +1,35 @@ +#ifndef PARTS_INVENTORY_TABLE_VIEW_H_ +#define PARTS_INVENTORY_TABLE_VIEW_H_ + +#include +#include + +class QTableView; +class PartsInventoryTableView : public QTableView +{ + Q_OBJECT +public: + PartsInventoryTableView(QWidget* parent = nullptr); + ~PartsInventoryTableView(); + + void Set_Model_Data(QList data,QList list); + + int Get_Row() const + { + return _row; + } + void Set_Max(int max) + { + _max = max; + } +signals: + void TableModityData(int,int,QVariant); + void RefrushData(int Row); + +private: + int _row = 0; + int _max = 0; +}; + + +#endif //PARTS_INVENTORY_TABLE_VIEW_H_ diff --git a/Src/Pub/PubCss.cpp b/Src/Pub/PubCss.cpp new file mode 100644 index 0000000..cd97329 --- /dev/null +++ b/Src/Pub/PubCss.cpp @@ -0,0 +1,62 @@ +#include "PubCss.h" + +#define GETSTR(x) #x + +PubCss *PubCss::Get() +{ + static PubCss cx; + return &cx; +} + +QString PubCss::GetStr(CSS css) const +{ + auto it = _mapList.begin(); + for(; it != _mapList.end(); ++it) + { + if(it.key() == css) + { + return it.value(); + } + } + return ""; +} + +PubCss::PubCss(QObject *obj) + :QObject (obj) +{ + _mapList[SMALLWINDOW_LEFTBUTTONSTYLE] = GETSTR + ( + QPushButton + { + border:none; + color:rgb(255,255,255); + } + QPushButton:hover + { + background-color:rgb(25,28,59); + } + ); + _mapList[SMALLWINDOW_TITLELABEL] = GETSTR + ( + QLabel + { + border:none; + color:rgb(255,255,255); + font: "楷体" 13pt; + } + ); + _mapList[DEVICEMONITORING_BOTTOMLABEL] = GETSTR + ( + QLabel + { + border:none; + color:rgb(235,235,235); + background-color:rgb(48,48,85); + } + ); +} + +PubCss::~PubCss() +{ + +} diff --git a/Src/Pub/PubCss.h b/Src/Pub/PubCss.h new file mode 100644 index 0000000..e2b7dda --- /dev/null +++ b/Src/Pub/PubCss.h @@ -0,0 +1,29 @@ +#ifndef _PUB_CSS_H_ +#define _PUB_CSS_H_ + +#include +#include + +enum CSS +{ + SMALLWINDOW_LEFTBUTTONSTYLE, + SMALLWINDOW_TITLELABEL, + DEVICEMONITORING_BOTTOMLABEL, + +}; + +class PubCss : public QObject +{ +public: + static PubCss* Get(); + QString GetStr(CSS) const; + +private: + PubCss(QObject* obj = nullptr); + ~PubCss(); + + QMap _mapList; +}; + + +#endif //_PUB_CSS_H_ diff --git a/Src/Pub/PubFunction.cpp b/Src/Pub/PubFunction.cpp new file mode 100644 index 0000000..d7a0fed --- /dev/null +++ b/Src/Pub/PubFunction.cpp @@ -0,0 +1,14 @@ +#include "PubFunction.h" +#include +#include + + +Pub_Function::Pub_Function(QObject *parent) +{ + +} + +Pub_Function::~Pub_Function() +{ + +} diff --git a/Src/Pub/PubFunction.h b/Src/Pub/PubFunction.h new file mode 100644 index 0000000..6c537b6 --- /dev/null +++ b/Src/Pub/PubFunction.h @@ -0,0 +1,25 @@ +#ifndef _PUB_FUNCTION_H_ +#define _PUB_FUNCTION_H_ + +#include + +class Pub_Function : public QObject +{ + Q_OBJECT +private: + Pub_Function(QObject* parent = nullptr); + ~Pub_Function(); + +public: + static Pub_Function* Get() + { + static Pub_Function cx; + return &cx; + } + void LoadLayout(); + //读取布局 + void SaveLayout(); + //保存布局 +}; + +#endif //_PUB_FUNCTION_H_ diff --git a/Src/Task/OpenCVVideo.cpp b/Src/Task/OpenCVVideo.cpp new file mode 100644 index 0000000..df9f15d --- /dev/null +++ b/Src/Task/OpenCVVideo.cpp @@ -0,0 +1,63 @@ +#include "OpenCVVideo.h" +#include +#include +#include + +static cv::VideoCapture cap2; +static cv::Mat MatCamear; + +OpenCV_PV_Thread::OpenCV_PV_Thread() +{ + +} + +OpenCV_PV_Thread::~OpenCV_PV_Thread() +{ + isClose = true; + this->quit(); + this->wait(); +} + + +bool OpenCV_PV_Thread::Open() +{ + mux.lock(); + bool isOpen = cap2.open(0); + mux.unlock(); + if(!isOpen) + { + return false; + } + isCamear = true; + return true; +} + +void OpenCV_PV_Thread::run() +{ + while(1) + { + mux.lock(); + if(isClose) + { + mux.unlock(); + break; + } + if(!isCamear) + { + mux.unlock(); + continue; + } + if(isCamear && cap2.isOpened()) + { + bool isRead = cap2.read(MatCamear); + if(isRead) + emit ShowCamera(MatCamear); + } + else + { + Sleep(30); + } + + mux.unlock(); + } +} diff --git a/Src/Task/OpenCVVideo.h b/Src/Task/OpenCVVideo.h new file mode 100644 index 0000000..1e7cf7f --- /dev/null +++ b/Src/Task/OpenCVVideo.h @@ -0,0 +1,39 @@ +#ifndef _OPENCV_PV_THREAD_H_ +#define _OPENCV_PV_THREAD_H_ + +#include +#include +#include +#include +#include +#include +#include + +enum SavePaintModel +{ + pSavePaint, + vSavePaint, + cSavePaint, +}; + +class OpenCV_PV_Thread : public QThread +{ + Q_OBJECT +public: + OpenCV_PV_Thread(); + ~OpenCV_PV_Thread(); + bool Open(); + + void run(); + +signals: + void ShowCamera(cv::Mat); + +private: + //摄像头是否被打开 + bool isCamear = false; + QMutex mux; + bool isClose = false; +}; + +#endif //_OPENCV_PV_THREAD_H_ diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..046f24b --- /dev/null +++ b/main.cpp @@ -0,0 +1,13 @@ +#include "Src/Gui/SmallWindow.h" +#include "Src/Gui/TypeWindow.h" +#include "Src/Gui/MainWindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return a.exec(); +}