chengxr 1 year ago
parent
commit
b289f98ecb

+ 2 - 2
QFD/QFD.pro

@@ -95,12 +95,12 @@ SOURCES += \
     view/SettingView.cpp \
     view/StandardManageView.cpp \
     view/UserView.cpp \
-    widgets/AddSchemeWidget.cpp \
     widgets/AppInfoWidget.cpp \
     widgets/ConfigExpertDataWidget.cpp \
     widgets/ConfigMeasureDataWidget.cpp \
     widgets/ConfigSchemeDataWidget.cpp \
     widgets/CreateProjWidget.cpp \
+    widgets/CreateSchemeWidget.cpp \
     widgets/CustomPie.cpp \
     widgets/CustomPieChart.cpp \
     widgets/CustomTitleBar.cpp \
@@ -165,12 +165,12 @@ HEADERS += \
     view/SettingView.h \
     view/StandardManageView.h \
     view/UserView.h \
-    widgets/AddSchemeWidget.h \
     widgets/AppInfoWidget.h \
     widgets/ConfigExpertDataWidget.h \
     widgets/ConfigMeasureDataWidget.h \
     widgets/ConfigSchemeDataWidget.h \
     widgets/CreateProjWidget.h \
+    widgets/CreateSchemeWidget.h \
     widgets/CustomPie.h \
     widgets/CustomPieChart.h \
     widgets/CustomTitleBar.h \

+ 10 - 0
QFD/common/SchemePlanManager.cpp

@@ -43,6 +43,16 @@ QString SchemePlanManager::stringFromAlgorithm(SchemePlanManager::Algorithm alg)
     }
 }
 
+QString SchemePlanManager::stringFromIndexCostType(SchemePlanManager::IndexCostType t)
+{
+    switch (t) {
+    case IndexCostTypeCost:
+        return "成本型";
+    case IndexCostTypeBenefit:
+        return "效益型";
+    }
+}
+
 QString SchemePlanManager::processName(const SchemeProcessInfo &process)
 {
     QList<QString> l1 = { "构建权重分析指标体系", "收集权重分析数据", "指标体系优化", "指标权重计算", "", "",

+ 8 - 0
QFD/common/SchemePlanManager.h

@@ -75,6 +75,14 @@ public:
         AlgorithmCategory category = NoCategory;
     };
 
+    enum IndexCostType
+    {
+        IndexCostTypeCost,     // 成本型
+        IndexCostTypeBenefit,  // 效益型
+    };
+
+    static QString stringFromIndexCostType(IndexCostType t);
+
     /**
      * @brief The SchemeProcessInfo struct
      * 方案步骤详情

+ 8 - 2
QFD/widgets/ConfigSchemeDataWidget.cpp

@@ -12,6 +12,7 @@
 #include <QBoxLayout>
 #include <QImageReader>
 #include <QTextEdit>
+#include <QFile>
 
 #include <QDebug>
 
@@ -132,8 +133,13 @@ void ConfigSchemeDataWidget::slotSelectedChanged(int row)
 
     SchemaEval *scheme = m_schemeList[row];
     m_remark->setText(scheme->remark);
-    QImage image   = QImage(scheme->filePath);
-    QPixmap pixmap = QPixmap::fromImage(image);
+
+    QFile file(scheme->filePath);
+    file.open(QIODevice::ReadOnly);
+    QByteArray data = file.readAll();
+    QPixmap pixmap;
+    pixmap.loadFromData(data);
+
     pixmap = pixmap.scaled(m_pic->width(), m_pic->height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
     m_pic->setPixmap(pixmap);
 }

+ 31 - 29
QFD/widgets/AddSchemeWidget.cpp → QFD/widgets/CreateSchemeWidget.cpp

@@ -1,4 +1,4 @@
-#include "AddSchemeWidget.h"
+#include "CreateSchemeWidget.h"
 
 #include <Widgets/Button.h>
 #include <Widgets/LineEdit.h>
@@ -8,7 +8,9 @@
 #include <QDebug>
 #include <QFileDialog>
 
-AddSchemeWidget::AddSchemeWidget(QWidget *parent) : QDialog(parent)
+static const QString kNullImageTag = "无效图片";
+
+CreateSchemeWidget::CreateSchemeWidget(QWidget *parent) : QDialog(parent)
 {
     initWindow();
     initialize();
@@ -16,13 +18,14 @@ AddSchemeWidget::AddSchemeWidget(QWidget *parent) : QDialog(parent)
     connectSignalsAndSlots();
 }
 
-void AddSchemeWidget::clearInputs()
+void CreateSchemeWidget::clearInputs()
 {
     m_nameEdit->clear();
     m_schemeEdit->clear();
+    m_picLine->clear();
 }
 
-void AddSchemeWidget::initWindow()
+void CreateSchemeWidget::initWindow()
 {
     setWindowTitle("新建方案");
     setModal(true);
@@ -31,7 +34,7 @@ void AddSchemeWidget::initWindow()
     resize(370, 350);
 }
 
-void AddSchemeWidget::initialize()
+void CreateSchemeWidget::initialize()
 {
     m_vBoxLayout = new QVBoxLayout(this);
     m_gridLayout = new QGridLayout();
@@ -54,7 +57,7 @@ void AddSchemeWidget::initialize()
     m_confirButton->setEnabled(false);
 }
 
-void AddSchemeWidget::initLayout()
+void CreateSchemeWidget::initLayout()
 {
     m_vBoxLayout->setMargin(15);
 
@@ -74,41 +77,40 @@ void AddSchemeWidget::initLayout()
     m_hBoxLayout->addWidget(m_confirButton);
 }
 
-void AddSchemeWidget::connectSignalsAndSlots()
+void CreateSchemeWidget::connectSignalsAndSlots()
 {
-    connect(m_picButton, &QPushButton::clicked, this, &AddSchemeWidget::slotSelectPic);
-    connect(m_nameEdit, &LineEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
-    connect(m_schemeEdit, &TextEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
-    connect(m_picLine, &LineEdit::textChanged, this, &AddSchemeWidget::slotContentChanged);
-    connect(m_confirButton, &PushButton::clicked, this, &AddSchemeWidget::slotConfirmed);
+    connect(m_picButton, &QPushButton::clicked, this, &CreateSchemeWidget::slotSelectPic);
+    connect(m_nameEdit, &LineEdit::textChanged, this, &CreateSchemeWidget::slotContentChanged);
+    connect(m_schemeEdit, &TextEdit::textChanged, this, &CreateSchemeWidget::slotContentChanged);
+    connect(m_picLine, &LineEdit::textChanged, this, &CreateSchemeWidget::slotContentChanged);
+    connect(m_confirButton, &PushButton::clicked, this, &CreateSchemeWidget::slotConfirmed);
 }
 
-void AddSchemeWidget::slotSelectPic()
+void CreateSchemeWidget::slotSelectPic()
 {
-    qDebug() << __FUNCTION__ << __LINE__ << endl;
-    QFileDialog::Options options;
-    options |= QFileDialog::DontUseNativeDialog;
-    QString selectedFilter;
-    QString fileName = QFileDialog::getOpenFileName(this, "选择图片", "", "图片(*.jpg *.png *jpeg *bmp)",
-                                                    &selectedFilter, options);
-
-    bool fileValid = true;
-    if (fileName.isEmpty() || fileName.size() <= 0) {
-        fileValid = false;
-        return;
+    QString fileName = QFileDialog::getOpenFileName(nullptr, "Open Image", "", "images(*.bmp *.png *.jpg *.webp)");
+
+    QFile file(fileName);
+    file.open(QIODevice::ReadOnly);
+    QByteArray data = file.readAll();
+    QPixmap pixmap;
+    pixmap.loadFromData(data);
+
+    if (pixmap.isNull()) {
+        m_picLine->setText(kNullImageTag);
+    } else {
+        m_picLine->setText(fileName);
     }
-
-    m_picLine->setText(fileName);
 }
 
-void AddSchemeWidget::slotContentChanged()
+void CreateSchemeWidget::slotContentChanged()
 {
     bool valid = m_nameEdit->text().length() > 0 && m_schemeEdit->toPlainText().length() > 0
-            && m_picLine->text().length() > 0;
+            && m_picLine->text().length() > 0 && m_picLine->text() != kNullImageTag;
     m_confirButton->setEnabled(valid);
 }
 
-void AddSchemeWidget::slotConfirmed()
+void CreateSchemeWidget::slotConfirmed()
 {
     emit sigSchemeInfoConfirmed(m_nameEdit->text(), m_schemeEdit->toPlainText(), m_picLine->text());
     close();

+ 5 - 5
QFD/widgets/AddSchemeWidget.h → QFD/widgets/CreateSchemeWidget.h

@@ -1,5 +1,5 @@
-#ifndef ADDSCHEMEWIDGET_H
-#define ADDSCHEMEWIDGET_H
+#ifndef CREATESCHEMEWIDGET_H
+#define CREATESCHEMEWIDGET_H
 
 #include <QDialog>
 
@@ -14,11 +14,11 @@ class QHBoxLayout;
 class QLabel;
 class LineEdit;
 
-class AddSchemeWidget : public QDialog
+class CreateSchemeWidget : public QDialog
 {
     Q_OBJECT
 public:
-    explicit AddSchemeWidget(QWidget *parent = nullptr);
+    explicit CreateSchemeWidget(QWidget *parent = nullptr);
 
     void clearInputs();
 
@@ -52,4 +52,4 @@ private:
     PushButton *m_confirButton = nullptr;
 };
 
-#endif  // ADDSCHEMEWIDGET_H
+#endif  // CREATESCHEMEWIDGET_H

+ 3 - 3
QFD/widgets/DataCollectionWidget.cpp

@@ -4,7 +4,7 @@
 #include "ConfigExpertDataWidget.h"
 #include "ConfigMeasureDataWidget.h"
 #include "ConfigSchemeDataWidget.h"
-#include "AddSchemeWidget.h"
+#include "CreateSchemeWidget.h"
 
 #include "EvalDataManager.h"
 #include "algorithm/HierarchicalAnalysis.h"
@@ -63,7 +63,7 @@ DataCollectionWidget::DataCollectionWidget(ProjectInfo *proj, QWidget *parent) :
     m_topLayout->addSpacing(10);
     m_topLayout->addWidget(m_calcBtn);
 
-    m_addSchemeWidget = new AddSchemeWidget(this);
+    m_addSchemeWidget = new CreateSchemeWidget(this);
 
     connect(m_calcBtn, &PushButton::clicked, this, &DataCollectionWidget::slotCalc);
 
@@ -73,7 +73,7 @@ DataCollectionWidget::DataCollectionWidget(ProjectInfo *proj, QWidget *parent) :
             &DataCollectionWidget::slotConfigSelected);
     connect(m_configScheme, &ConfigSchemeDataWidget::sigAddScheme, this, &DataCollectionWidget::slotAddScheme);
     connect(m_configMeasure, &ConfigMeasureDataWidget::sigAddData, this, &DataCollectionWidget::slotAddData);
-    connect(m_addSchemeWidget, &AddSchemeWidget::sigSchemeInfoConfirmed, this,
+    connect(m_addSchemeWidget, &CreateSchemeWidget::sigSchemeInfoConfirmed, this,
             &DataCollectionWidget::slotAddSchemeInfo);
 }
 

+ 2 - 2
QFD/widgets/DataCollectionWidget.h

@@ -6,7 +6,7 @@
 class ConfigExpertDataWidget;
 class ConfigMeasureDataWidget;
 class ConfigSchemeDataWidget;
-class AddSchemeWidget;
+class CreateSchemeWidget;
 
 class UserConfig;
 class QFUser;
@@ -58,7 +58,7 @@ private:
     QComboBox *m_comboBox = nullptr;
     PushButton *m_calcBtn = nullptr;
 
-    AddSchemeWidget *m_addSchemeWidget = nullptr;
+    CreateSchemeWidget *m_addSchemeWidget = nullptr;
 };
 
 #endif  // DATACOLLECTIONWIDGET_H

+ 1 - 1
QFD/widgets/ProjectListWidget.cpp

@@ -45,7 +45,7 @@ void ProjectListItemWidget::initWidgets()
     m_delete = new PushButton("删除", NEWFLICON(FluentIcon, DELETE), this);
     m_delete->setObjectName("delete");
 
-    m_export = new PushButton("导出资源包", NEWFLICON(FluentIcon, DELETE), this);
+    m_export = new PushButton("导出资源包", NEWFLICON(FluentIcon, SHARE), this);
     m_export->setObjectName("export");
 
     setStyleSheet("#name {color:#1196db; font-size:17px; font:bold}"

+ 2 - 2
QFD/widgets/SchemeOptionWidget.cpp

@@ -1,6 +1,6 @@
 #include "SchemeOptionWidget.h"
 
-#include "AddSchemeWidget.h"
+#include "CreateSchemeWidget.h"
 
 #include <Widgets/Button.h>
 #include <Common/Icon.h>
@@ -54,7 +54,7 @@ void SchemeOptionWidget::initialize()
     m_listWidget  = new QListWidget(this);
     m_listWidget->setFixedHeight(200);
 
-    m_addSchemeWidget = new AddSchemeWidget(this);
+    m_addSchemeWidget = new CreateSchemeWidget(this);
 
     setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
                   "255);alternate-background-color: rgb(244, 244, 255);}");

+ 2 - 2
QFD/widgets/SchemeOptionWidget.h

@@ -3,7 +3,7 @@
 
 #include <QWidget>
 
-class AddSchemeWidget;
+class CreateSchemeWidget;
 
 class RadioButton;
 class PushButton;
@@ -56,7 +56,7 @@ private:
     QLabel *m_schemeLabel     = nullptr;
     QListWidget *m_listWidget = nullptr;
 
-    AddSchemeWidget *m_addSchemeWidget = nullptr;
+    CreateSchemeWidget *m_addSchemeWidget = nullptr;
 };
 
 #endif  // SCHEMEOPTIONWIDGET_H