Browse Source

评估方案

chengxr 1 year ago
parent
commit
9c307d9371

+ 2 - 0
QFD/QFD.pro

@@ -83,6 +83,7 @@ SOURCES += \
     widgets/ProjectStateWidget.cpp \
     widgets/RegisterWidget.cpp \
     widgets/RenameWidget.cpp \
+    widgets/SchemeOptionWidget.cpp \
     widgets/SchemeWidget.cpp
 
 HEADERS += \
@@ -108,6 +109,7 @@ HEADERS += \
     widgets/ProjectStateWidget.h \
     widgets/RegisterWidget.h \
     widgets/RenameWidget.h \
+    widgets/SchemeOptionWidget.h \
     widgets/SchemeWidget.h
 
 

+ 2 - 0
QFD/common/QFDIcon.cpp

@@ -17,6 +17,8 @@ QString QFDIcon::iconName(QFDIcon::IconType type)
         return "Minus";
     case Project:
         return "Project";
+    case Schecme:
+        return "Scheme";
     case User:
         return "User";
     }

+ 1 - 0
QFD/common/QFDIcon.h

@@ -16,6 +16,7 @@ public:
         Logout,
         Minus,
         Project,
+        Schecme,
         User,
     };
 

+ 2 - 0
QFD/resource.qrc

@@ -376,5 +376,7 @@
         <file>resource/svg/Logout_white.svg</file>
         <file>resource/svg/Minus_black.svg</file>
         <file>resource/svg/Minus_white.svg</file>
+        <file>resource/svg/Scheme_black.svg</file>
+        <file>resource/svg/Scheme_white.svg</file>
     </qresource>
 </RCC>

+ 1 - 0
QFD/resource/svg/Scheme_black.svg

@@ -0,0 +1 @@
+<svg t="1690724555783" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2609" width="16" height="16"><path d="M558.933333 896H167.68V175.786667h676.906667v404.906666h-85.333334V261.12H253.013333V810.666667H558.933333v85.333333z" fill="#000000" p-id="2610"></path><path d="M351.146667 344.533333h309.76v85.333334H351.146667z" fill="#000000" p-id="2611"></path><path d="M849.706667 853.333333a42.666667 42.666667 0 1 1-42.666667-42.666666 42.666667 42.666667 0 0 1 42.666667 42.666666zM661.333333 614.613333a42.666667 42.666667 0 1 0 42.666667 42.666667 42.666667 42.666667 0 0 0-42.666667-42.666667z m174.72 0h-88.32L631.466667 896h88.746666l116.266667-281.173333z" fill="#000000" p-id="2612"></path></svg>

+ 1 - 0
QFD/resource/svg/Scheme_white.svg

@@ -0,0 +1 @@
+<svg t="1690724555783" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2609" width="16" height="16"><path d="M558.933333 896H167.68V175.786667h676.906667v404.906666h-85.333334V261.12H253.013333V810.666667H558.933333v85.333333z" fill="#ffffff" p-id="2610"></path><path d="M351.146667 344.533333h309.76v85.333334H351.146667z" fill="#ffffff" p-id="2611"></path><path d="M849.706667 853.333333a42.666667 42.666667 0 1 1-42.666667-42.666666 42.666667 42.666667 0 0 1 42.666667 42.666666zM661.333333 614.613333a42.666667 42.666667 0 1 0 42.666667 42.666667 42.666667 42.666667 0 0 0-42.666667-42.666667z m174.72 0h-88.32L631.466667 896h88.746666l116.266667-281.173333z" fill="#ffffff" p-id="2612"></path></svg>

+ 78 - 5
QFD/view/EvaluateView.cpp

@@ -2,12 +2,17 @@
 
 #include "ProjectListWidget.h"
 #include "RenameWidget.h"
+#include "EvaluateOptionWidget.h"
+#include "common/QFDIcon.h"
+#include "SchemeWidget.h"
 
 #include <Widgets/Button.h>
 #include <Widgets/LineEdit.h>
 
 #include <QBoxLayout>
 #include <QLabel>
+#include <QTableWidget>
+#include <QDebug>
 
 EvaluateView::EvaluateView(QWidget *parent) : QWidget(parent)
 {
@@ -36,11 +41,39 @@ void EvaluateView::initialize()
 
     m_projListWidget   = new ProjectListWidget(this);
     m_projDetailWidget = new QWidget(this);
-    m_projLayout       = new QVBoxLayout(m_projDetailWidget);
+    m_dataLayout       = new QVBoxLayout(m_projDetailWidget);
 
     m_projNameLabel = new QLabel(this);
     m_projNameLabel->setObjectName("projNameLabel");
     m_projNameLabel->setText("工程1-技术方案评估");
+
+    m_strategyLayout = new QHBoxLayout();
+    m_strategyLayout->setAlignment(Qt::AlignLeft);
+    m_resultButton = new RadioButton("结果集结群策", this);
+    m_resultButton->setChecked(true);
+    m_matrixButton = new RadioButton("矩阵集结群策", this);
+    m_schemeButton = new PushButton("方案评估", NEWFLICON(QFDIcon, Schecme), this);
+
+    m_tabWidget = new QTabWidget(this);
+    m_tabWidget->setTabPosition(QTabWidget::South);
+    m_tabWidget->addTab(new QTableWidget(this), "覆盖能力");
+    m_tabWidget->addTab(new QTableWidget(this), "传输能力");
+    m_tabWidget->addTab(new QTableWidget(this), "组网能力");
+
+    m_pageLayout = new QHBoxLayout();
+    m_pageLayout->setAlignment(Qt::AlignHCenter);
+    m_pageLabel      = new QLabel("共2页 当前第1页", this);
+    m_lastPageButton = new PushButton("上一级指标", this);
+    m_nextPageButton = new PushButton("下一级指标", this);
+
+    m_separator = new QWidget();
+    m_separator->setFixedWidth(1);
+    m_separator->setStyleSheet("background-color:#dddddd");
+
+    m_optionWidget = new EvaluateOptionWidget(this);
+    m_optionWidget->setFixedWidth(200);
+
+    m_schemeWidget = new SchemeWidget(this);
 }
 
 void EvaluateView::initLayout()
@@ -54,10 +87,50 @@ void EvaluateView::initLayout()
 
     m_hBoxLayout->addWidget(m_projDetailWidget);
 
-    m_projLayout->addWidget(m_projNameLabel);
-    m_projLayout->addStretch();
+    m_dataLayout->addWidget(m_projNameLabel);
+    m_dataLayout->addSpacing(20);
+
+    m_dataLayout->addLayout(m_strategyLayout);
+    m_strategyLayout->addWidget(m_resultButton);
+    m_strategyLayout->addSpacing(20);
+    m_strategyLayout->addWidget(m_matrixButton);
+    m_strategyLayout->addStretch();
+    m_strategyLayout->addWidget(m_schemeButton);
+
+    m_dataLayout->addWidget(m_tabWidget);
+
+    m_dataLayout->addLayout(m_pageLayout);
+    m_pageLayout->addWidget(m_pageLabel);
+    m_pageLayout->addWidget(m_lastPageButton);
+    m_pageLayout->addWidget(m_nextPageButton);
+
+    m_hBoxLayout->addWidget(m_separator, Qt::AlignRight);
+    m_hBoxLayout->addWidget(m_optionWidget, Qt::AlignRight);
+
+    setStyleSheet("#projNameLabel {font-size:20px;font:bold;color:#333333}"
+                  "QTableWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(244, 244, "
+                  "255);alternate-background-color: rgb(255, 255, 255);}"
+                  "QHeaderView::section {"
+                  "background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,"
+                  "stop:0 #616161, stop: 0.5 #505050,"
+                  "stop: 0.6 #434343, stop:1 #656565);"
+                  "color: white;"
+                  "padding-left: 4px;"
+                  "border: 1px solid #6c6c6c;"
+                  "}");
+
+    const QString &s = m_schemeButton->styleSheet() + "PushButton {background-color:#92cde1; }";
+    m_schemeButton->setStyleSheet(s);
+}
 
-    setStyleSheet("#projNameLabel {font-size:20px;font:bold;color:#333333}");
+void EvaluateView::connectSiganlsAndSlots()
+{
+    connect(m_schemeButton, &PushButton::clicked, this, &EvaluateView::slotSchemeClicked);
 }
 
-void EvaluateView::connectSiganlsAndSlots() { }
+void EvaluateView::slotSchemeClicked()
+{
+    if (m_schemeWidget->isVisible() == false) {
+        m_schemeWidget->show();
+    }
+}

+ 18 - 7
QFD/view/EvaluateView.h

@@ -5,10 +5,12 @@
 
 class ProjectListWidget;
 class EvaluateOptionWidget;
+class SchemeWidget;
 
 class LineEdit;
 class ToolButton;
 class PushButton;
+class RadioButton;
 
 class QVBoxLayout;
 class QHBoxLayout;
@@ -30,6 +32,9 @@ private:
     void initLayout();
     void connectSiganlsAndSlots();
 
+private slots:
+    void slotSchemeClicked();
+
 private:
     QHBoxLayout *m_hBoxLayout = nullptr;
 
@@ -39,19 +44,25 @@ private:
     ProjectListWidget *m_projListWidget = nullptr;
 
     QWidget *m_projDetailWidget = nullptr;
-    QVBoxLayout *m_projLayout   = nullptr;
+    QVBoxLayout *m_dataLayout   = nullptr;
     QLabel *m_projNameLabel     = nullptr;
 
-    QHBoxLayout *m_strategyLayout   = nullptr;
-    PushButton *m_resultGroupButton = nullptr;
-    PushButton *m_matrixGroupButton = nullptr;
+    QHBoxLayout *m_strategyLayout = nullptr;
+    RadioButton *m_resultButton   = nullptr;
+    RadioButton *m_matrixButton   = nullptr;
+    PushButton *m_schemeButton    = nullptr;
+
+    QTabWidget *m_tabWidget = nullptr;
 
-    QTableWidget *m_tableWidget = nullptr;
-    QTabWidget *m_tabWidget     = nullptr;
+    QHBoxLayout *m_pageLayout    = nullptr;
+    QLabel *m_pageLabel          = nullptr;
+    PushButton *m_lastPageButton = nullptr;
+    PushButton *m_nextPageButton = nullptr;
 
-    QHBoxLayout *m_pageLayout = nullptr;
+    QWidget *m_separator = nullptr;
 
     EvaluateOptionWidget *m_optionWidget = nullptr;
+    SchemeWidget *m_schemeWidget         = nullptr;
 };
 
 #endif  // EVALUATEVIEW_H

+ 110 - 1
QFD/widgets/EvaluateOptionWidget.cpp

@@ -1,6 +1,115 @@
-#include "EvaluateOptionWidget.h"
+#include "EvaluateOptionWidget.h"
+
+#include "QFDIcon.h"
+
+#include <Widgets/LineEdit.h>
+#include <Widgets/Button.h>
+
+#include <QLabel>
+#include <QBoxLayout>
+#include <QListWidget>
+#include <QButtonGroup>
 
 EvaluateOptionWidget::EvaluateOptionWidget(QWidget *parent) : QWidget(parent)
 {
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+    refreshExpertList();
+}
+
+void EvaluateOptionWidget::initialize()
+{
+    m_vBoxLayout   = new QVBoxLayout(this);
+    m_expDataLabel = new QLabel("专家信息", this);
+    m_listWidget   = new QListWidget(this);
+    m_listWidget->setFixedHeight(250);
+
+    m_radioLayout  = new QVBoxLayout();
+    m_radioButton1 = new RadioButton("算术平均", this);
+    m_radioButton1->setChecked(true);
+    m_radioButton2 = new RadioButton("几何平均", this);
+
+    QButtonGroup *group = new QButtonGroup(this);
+    group->addButton(m_radioButton1);
+    group->addButton(m_radioButton2);
+
+    m_expInfoLabel = new QLabel("专家介绍", this);
+    m_expInfoEdit  = new TextEdit(this);
+    m_expInfoEdit->setReadOnly(true);
+    m_expInfoEdit->setText("awdsfawdvasdvasdvasdv");
+    m_expInfoEdit->setFixedHeight(200);
+
+    m_buttonLayout = new QHBoxLayout();
+    m_exportButton = new PushButton("导出xlsx文件", NEWFLICON(FluentIcon, SHARE), this);
+
+    setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);}"
+                  "QListView::item {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ffffff, stop: 0.9 "
+                  "#ffffff,stop: 1 #eeeeee);height:44;}"
+                  "QPushButton {border: 0;background-color: qlineargradient(x1: 0, y1: 0, x2: "
+                  "0, y2: 1,stop: 0 #f8f8f8, stop: 1 #f8f8f8);}"
+                  "QPushButton::hover {border: 1px solid rgba(0, 0, 0, 0.073);}"
+                  "QPushButton::pressed {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dadbde, "
+                  "stop: 1 #f6f7fa);}");
+}
+
+void EvaluateOptionWidget::initLayout()
+{
+    m_vBoxLayout->addWidget(m_expDataLabel);
+    m_vBoxLayout->addWidget(m_listWidget);
+
+    m_vBoxLayout->addSpacing(30);
+
+    m_vBoxLayout->addLayout(m_radioLayout);
+    m_radioLayout->addWidget(m_radioButton1);
+    m_radioLayout->addWidget(m_radioButton2);
+
+    m_vBoxLayout->addStretch();
+
+    m_vBoxLayout->addWidget(m_expInfoLabel);
+    m_vBoxLayout->addWidget(m_expInfoEdit);
+
+    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_buttonLayout->addWidget(m_exportButton, Qt::AlignRight);
+}
+
+void EvaluateOptionWidget::connectSignalsAndSlots() { }
+
+void EvaluateOptionWidget::refreshExpertList()
+{
+    m_listWidget->clear();
+
+    for (int i = 1; i <= 50; i++) {
+        QListWidgetItem *item = new QListWidgetItem;
+        item->setSizeHint(QSize(100, 40));
+        m_listWidget->addItem(item);
+
+        QWidget *w = new QWidget();
+        m_listWidget->setItemWidget(item, w);
+
+        QHBoxLayout *hBox = new QHBoxLayout(w);
+        hBox->setMargin(10);
+
+        QLabel *avatar = new QLabel(w);
+        avatar->setPixmap(NEWFLICON(QFDIcon, Expert)->icon().pixmap(16, 16));
+        hBox->addWidget(avatar);
+
+        hBox->addSpacing(10);
+        QLabel *name = new QLabel(QString("专家%1").arg(i));
+        hBox->addWidget(name);
+
+        hBox->addStretch();
+
+        QPushButton *button = new QPushButton(NEWFLICON(FluentIcon, DOWNLOAD)->icon(), "", w);
+        button->setFixedSize(QSize(25, 25));
+        button->setIconSize(QSize(15, 15));
+        button->setToolTip("导入专家数据");
 
+        hBox->addWidget(button);
+        if (i % 2 == 0 && i < 6) {
+            button->setIcon(NEWFLICON(FluentIcon, COMPLETED)->icon());
+            button->setEnabled(false);
+            button->setToolTip("已导入");
+        }
+    }
 }

+ 32 - 2
QFD/widgets/EvaluateOptionWidget.h

@@ -1,16 +1,46 @@
-#ifndef EVALUATEOPTIONWIDGET_H
+#ifndef EVALUATEOPTIONWIDGET_H
 #define EVALUATEOPTIONWIDGET_H
 
 #include <QWidget>
 
+class PushButton;
+class TextEdit;
+class RadioButton;
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QLabel;
+class QListWidget;
+
 class EvaluateOptionWidget : public QWidget
 {
     Q_OBJECT
 public:
     explicit EvaluateOptionWidget(QWidget *parent = nullptr);
 
+private:
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+
+    void refreshExpertList();
+
 signals:
 
+private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+    QLabel *m_expDataLabel    = nullptr;
+    QListWidget *m_listWidget = nullptr;
+
+    QVBoxLayout *m_radioLayout  = nullptr;
+    RadioButton *m_radioButton1 = nullptr;
+    RadioButton *m_radioButton2 = nullptr;
+
+    QLabel *m_expInfoLabel  = nullptr;
+    TextEdit *m_expInfoEdit = nullptr;
+
+    QHBoxLayout *m_buttonLayout = nullptr;
+    PushButton *m_exportButton  = nullptr;
 };
 
-#endif // EVALUATEOPTIONWIDGET_H
+#endif  // EVALUATEOPTIONWIDGET_H

+ 87 - 0
QFD/widgets/SchemeOptionWidget.cpp

@@ -0,0 +1,87 @@
+#include "SchemeOptionWidget.h"
+
+#include <Widgets/Button.h>
+
+#include <QLabel>
+#include <QBoxLayout>
+#include <QListWidget>
+#include <QButtonGroup>
+
+SchemeOptionWidget::SchemeOptionWidget(QWidget *parent) : QWidget(parent)
+{
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+}
+
+void SchemeOptionWidget::initialize()
+{
+    m_vBoxLayout = new QVBoxLayout(this);
+
+    m_normalLabel  = new QLabel("归一化公式", this);
+    m_normalLayout = new QVBoxLayout();
+    m_minButton    = new RadioButton("最小值");
+    m_minButton->setChecked(true);
+    m_maxButton    = new RadioButton("最大值");
+    m_zscoreButton = new RadioButton("Z-Score法");
+
+    QButtonGroup *normalGroup = new QButtonGroup(this);
+    normalGroup->addButton(m_minButton);
+    normalGroup->addButton(m_maxButton);
+    normalGroup->addButton(m_zscoreButton);
+
+    m_calcLabel  = new QLabel("计算方法", this);
+    m_calcLayout = new QVBoxLayout();
+    m_pairButton = new RadioButton("集对分析法");
+    m_pairButton->setChecked(true);
+    m_averageButton = new RadioButton("平均值法");
+
+    QButtonGroup *calcGroup = new QButtonGroup(this);
+    calcGroup->addButton(m_pairButton);
+    calcGroup->addButton(m_averageButton);
+
+    m_buttonLayout = new QHBoxLayout();
+    m_calcButton   = new PushButton("计算", this);
+    m_saveButton   = new PushButton("保存", this);
+
+    m_schemeLabel = new QLabel("方案排行榜", this);
+    m_listWidget  = new QListWidget(this);
+    m_listWidget->setFixedHeight(150);
+
+    m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
+                                "255);alternate-background-color: rgb(244, 244, 255);}");
+}
+
+void SchemeOptionWidget::initLayout()
+{
+    m_vBoxLayout->addWidget(m_normalLabel);
+    m_vBoxLayout->addLayout(m_normalLayout);
+    m_normalLayout->setContentsMargins(20, 0, 0, 0);
+    m_normalLayout->addWidget(m_minButton);
+    m_normalLayout->addWidget(m_maxButton);
+    m_normalLayout->addWidget(m_zscoreButton);
+
+    m_vBoxLayout->addStretch();
+
+    m_vBoxLayout->addWidget(m_calcLabel);
+    m_vBoxLayout->addLayout(m_calcLayout);
+    m_calcLayout->setContentsMargins(20, 0, 0, 0);
+    m_calcLayout->addWidget(m_pairButton);
+    m_calcLayout->addWidget(m_averageButton);
+
+    m_vBoxLayout->addStretch();
+
+    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_buttonLayout->addStretch();
+    m_buttonLayout->addWidget(m_calcButton);
+    m_buttonLayout->addSpacing(30);
+    m_buttonLayout->addWidget(m_saveButton);
+    m_buttonLayout->addStretch();
+
+    m_vBoxLayout->addStretch();
+
+    m_vBoxLayout->addWidget(m_schemeLabel);
+    m_vBoxLayout->addWidget(m_listWidget);
+}
+
+void SchemeOptionWidget::connectSignalsAndSlots() { }

+ 51 - 0
QFD/widgets/SchemeOptionWidget.h

@@ -0,0 +1,51 @@
+#ifndef SCHEMEOPTIONWIDGET_H
+#define SCHEMEOPTIONWIDGET_H
+
+#include <QWidget>
+
+class RadioButton;
+class PushButton;
+
+class QLabel;
+class QListWidget;
+
+class QVBoxLayout;
+class QHBoxLayout;
+
+class SchemeOptionWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit SchemeOptionWidget(QWidget *parent = nullptr);
+
+signals:
+
+private:
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+
+private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+
+    QLabel *m_normalLabel = nullptr;
+
+    QVBoxLayout *m_normalLayout = nullptr;
+    RadioButton *m_minButton    = nullptr;
+    RadioButton *m_maxButton    = nullptr;
+    RadioButton *m_zscoreButton = nullptr;
+
+    QLabel *m_calcLabel          = nullptr;
+    QVBoxLayout *m_calcLayout    = nullptr;
+    RadioButton *m_pairButton    = nullptr;
+    RadioButton *m_averageButton = nullptr;
+
+    QHBoxLayout *m_buttonLayout = nullptr;
+    PushButton *m_calcButton    = nullptr;
+    PushButton *m_saveButton    = nullptr;
+
+    QLabel *m_schemeLabel     = nullptr;
+    QListWidget *m_listWidget = nullptr;
+};
+
+#endif  // SCHEMEOPTIONWIDGET_H

+ 46 - 2
QFD/widgets/SchemeWidget.cpp

@@ -1,6 +1,50 @@
-#include "SchemeWidget.h"
+#include "SchemeWidget.h"
 
-SchemeWidget::SchemeWidget(QWidget *parent) : QWidget(parent)
+#include "SchemeOptionWidget.h"
+
+#include <QBoxLayout>
+#include <QTableWidget>
+
+SchemeWidget::SchemeWidget(QWidget *parent) : QDialog(parent)
+{
+    initWindow();
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+}
+
+void SchemeWidget::initWindow()
+{
+    setWindowTitle("评估方案");
+    setModal(true);
+    setWindowFlags(Qt::Dialog);
+    setWindowFlag(Qt::WindowContextHelpButtonHint, false);
+    resize(1000, 600);
+}
+
+void SchemeWidget::initialize()
 {
+    m_hBoxLayout   = new QHBoxLayout(this);
+    m_tableWidget  = new QTableWidget(this);
+    m_optionWidget = new SchemeOptionWidget(this);
+    m_optionWidget->setFixedWidth(200);
+
+    setStyleSheet("QTableWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(244, 244, "
+                  "255);alternate-background-color: rgb(255, 255, 255);}"
+                  "QHeaderView::section {"
+                  "background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,"
+                  "stop:0 #616161, stop: 0.5 #505050,"
+                  "stop: 0.6 #434343, stop:1 #656565);"
+                  "color: white;"
+                  "padding-left: 4px;"
+                  "border: 1px solid #6c6c6c;"
+                  "}");
+}
 
+void SchemeWidget::initLayout()
+{
+    m_hBoxLayout->addWidget(m_tableWidget);
+    m_hBoxLayout->addWidget(m_optionWidget);
 }
+
+void SchemeWidget::connectSignalsAndSlots() { }

+ 20 - 4
QFD/widgets/SchemeWidget.h

@@ -1,16 +1,32 @@
-#ifndef SCHEMEWIDGET_H
+#ifndef SCHEMEWIDGET_H
 #define SCHEMEWIDGET_H
 
-#include <QWidget>
+#include <QDialog>
 
-class SchemeWidget : public QWidget
+class SchemeOptionWidget;
+
+class QHBoxLayout;
+class QTableWidget;
+
+class SchemeWidget : public QDialog
 {
     Q_OBJECT
 public:
     explicit SchemeWidget(QWidget *parent = nullptr);
 
+private:
+    void initWindow();
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+
 signals:
 
+private:
+    QHBoxLayout *m_hBoxLayout   = nullptr;
+    QTableWidget *m_tableWidget = nullptr;
+
+    SchemeOptionWidget *m_optionWidget = nullptr;
 };
 
-#endif // SCHEMEWIDGET_H
+#endif  // SCHEMEWIDGET_H