chengxr 1 year ago
parent
commit
f9e483a8ca

+ 6 - 4
QFD/QFD.pro

@@ -63,18 +63,19 @@ SOURCES += \
     common/QFDIcon.cpp \
     main.cpp \
     view/AboutView.cpp \
-    view/CreateProjView.cpp \
     view/EvaluateView.cpp \
-    view/ExpertInfoView.cpp \
     view/ExpertManageView.cpp \
     view/HomeView.cpp \
     view/LoginView.cpp \
     view/MainWindow.cpp \
     view/ProjectView.cpp \
+    view/SettingView.cpp \
     widgets/AppInfoWidget.cpp \
+    widgets/CreateProjWidget.cpp \
     widgets/CustomTitleBar.cpp \
     widgets/EvaluateDataWidget.cpp \
     widgets/ExpertConfigInfoWidget.cpp \
+    widgets/ExpertInfoWidget.cpp \
     widgets/ExpertListWidget.cpp \
     widgets/ImportExpertDataWidget.cpp \
     widgets/LoginWidget.cpp \
@@ -85,18 +86,19 @@ SOURCES += \
 HEADERS += \
     common/QFDIcon.h \
     view/AboutView.h \
-    view/CreateProjView.h \
     view/EvaluateView.h \
-    view/ExpertInfoView.h \
     view/ExpertManageView.h \
     view/HomeView.h \
     view/LoginView.h \
     view/MainWindow.h \
     view/ProjectView.h \
+    view/SettingView.h \
     widgets/AppInfoWidget.h \
+    widgets/CreateProjWidget.h \
     widgets/CustomTitleBar.h \
     widgets/EvaluateDataWidget.h \
     widgets/ExpertConfigInfoWidget.h \
+    widgets/ExpertInfoWidget.h \
     widgets/ExpertListWidget.h \
     widgets/ImportExpertDataWidget.h \
     widgets/LoginWidget.h \

+ 1 - 1
QFD/view/AboutView.cpp

@@ -10,9 +10,9 @@
 
 AboutView::AboutView(QWidget *parent) : QWidget(parent)
 {
-    //    setStyleSheet("background-color: rgb(222, 222, 0);");
     initialize();
     initLayout();
+    setWindowTitle("关于");
 }
 
 void AboutView::paintEvent(QPaintEvent *event)

+ 5 - 5
QFD/view/ExpertManageView.cpp

@@ -1,6 +1,6 @@
 #include "ExpertManageView.h"
 
-#include "ExpertInfoView.h"
+#include "ExpertInfoWidget.h"
 #include "ExpertListWidget.h"
 
 #include <Widgets/Button.h>
@@ -32,7 +32,7 @@ void ExpertManageView::initialize()
     m_searchLineEdit->setMinimumWidth(300);
     m_addExpertPushButton = new PushButton("添加", NEWFLICON(FluentIcon, ADD), this);
 
-    m_expertInfoView   = new ExpertInfoView(this);
+    m_expertInfoWidget   = new ExpertInfoWidget(this);
     m_expertListWidget = new ExpertListWidget(this);
 }
 
@@ -57,8 +57,8 @@ void ExpertManageView::connectSignalsAndSlots()
 
 void ExpertManageView::slotAddExpertClicked()
 {
-    if (m_expertInfoView->isVisible() == false) {
-        m_expertInfoView->clearInputs();
-        m_expertInfoView->show();
+    if (m_expertInfoWidget->isVisible() == false) {
+        m_expertInfoWidget->clearInputs();
+        m_expertInfoWidget->show();
     }
 }

+ 2 - 2
QFD/view/ExpertManageView.h

@@ -3,7 +3,7 @@
 
 #include <QWidget>
 
-class ExpertInfoView;
+class ExpertInfoWidget;
 class ExpertListWidget;
 
 class PushButton;
@@ -39,7 +39,7 @@ private:
     SearchLineEdit *m_searchLineEdit  = nullptr;
     PushButton *m_addExpertPushButton = nullptr;
 
-    ExpertInfoView *m_expertInfoView     = nullptr;
+    ExpertInfoWidget *m_expertInfoWidget = nullptr;
     ExpertListWidget *m_expertListWidget = nullptr;
 };
 

+ 5 - 7
QFD/view/HomeView.cpp

@@ -1,6 +1,6 @@
 #include "HomeView.h"
 
-#include "CreateProjView.h"
+#include "CreateProjWidget.h"
 #include "ProjectStateWidget.h"
 
 #include <Widgets/Button.h>
@@ -16,8 +16,6 @@ HomeView::HomeView(QWidget *parent) : QWidget(parent)
     initialize();
     initLayout();
     connectSignalsAndSlots();
-
-    //    this->setStyleSheet("background-color: rgb(250, 250, 250);");
 }
 
 void HomeView::initialize()
@@ -36,7 +34,7 @@ void HomeView::initialize()
 
     m_projStateWidget = new ProjectStateWidget(this);
 
-    m_createProjView = new CreateProjView(this);
+    m_createProjWidget = new CreateProjWidget(this);
 }
 
 void HomeView::initLayout()
@@ -60,8 +58,8 @@ void HomeView::connectSignalsAndSlots()
 
 void HomeView::slotCreateProjClicked()
 {
-    if (m_createProjView->isVisible() == false) {
-        m_createProjView->clearInputs();
-        m_createProjView->show();
+    if (m_createProjWidget->isVisible() == false) {
+        m_createProjWidget->clearInputs();
+        m_createProjWidget->show();
     }
 }

+ 2 - 2
QFD/view/HomeView.h

@@ -3,7 +3,7 @@
 
 #include <QWidget>
 
-class CreateProjView;
+class CreateProjWidget;
 class ProjectStateWidget;
 
 class PushButton;
@@ -39,7 +39,7 @@ private:
 
     ProjectStateWidget *m_projStateWidget = nullptr;
 
-    CreateProjView *m_createProjView = nullptr;
+    CreateProjWidget *m_createProjWidget = nullptr;
 };
 
 #endif  // HOMEVIEW_H

+ 12 - 0
QFD/view/MainWindow.cpp

@@ -7,6 +7,7 @@
 #include "EvaluateView.h"
 #include "LoginView.h"
 #include "AboutView.h"
+#include "SettingView.h"
 
 #include "common/QFDIcon.h"
 
@@ -89,6 +90,7 @@ void MainWindow::initialize()
     m_evaluateView     = new EvaluateView(this);
     m_expertManageView = new ExpertManageView(this);
     m_aboutView        = new AboutView(this);
+    m_settingView      = new SettingView(this);
 }
 
 void MainWindow::initWindow()
@@ -148,6 +150,11 @@ void MainWindow::initNavigation()
 
     m_naviInterface->addSeparator();
 
+    m_settingView->setObjectName("settingView");
+    m_stackWidget->addWidget(m_settingView);
+    m_naviInterface->addItem(m_settingView->objectName(), NEWFLICON(FluentIcon, SETTING), "设置", this,
+                             SLOT(settingViewClicked()), true, NavigationItemPosition::BOTTOM);
+
     m_aboutView->setObjectName("aboutView");
     m_stackWidget->addWidget(m_aboutView);
     m_naviInterface->addItem(m_aboutView->objectName(), NEWFLICON(FluentIcon, INFO), "关于", this,
@@ -228,3 +235,8 @@ void MainWindow::dataViewClicked()
 {
     switchTo(m_evaluateView);
 }
+
+void MainWindow::settingViewClicked()
+{
+    switchTo(m_settingView);
+}

+ 3 - 0
QFD/view/MainWindow.h

@@ -15,6 +15,7 @@ class ExpertManageView;
 class EvaluateView;
 class LoginView;
 class AboutView;
+class SettingView;
 
 class StackedWidget : public QFrame
 {
@@ -72,6 +73,7 @@ private slots:
     void expertViewClicked();
     void aboutViewClicked();
     void dataViewClicked();
+    void settingViewClicked();
 
 private:
     CustomTitleBar *m_titleBar;
@@ -87,5 +89,6 @@ private:
     EvaluateView *m_evaluateView;
     LoginView *m_loginView;
     AboutView *m_aboutView;
+    SettingView *m_settingView;
 };
 #endif  // MAINWINDOW_H

+ 6 - 0
QFD/view/SettingView.cpp

@@ -0,0 +1,6 @@
+#include "SettingView.h"
+
+SettingView::SettingView(QWidget *parent) : QWidget(parent)
+{
+
+}

+ 16 - 0
QFD/view/SettingView.h

@@ -0,0 +1,16 @@
+#ifndef SETTINGVIEW_H
+#define SETTINGVIEW_H
+
+#include <QWidget>
+
+class SettingView : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit SettingView(QWidget *parent = nullptr);
+
+signals:
+
+};
+
+#endif // SETTINGVIEW_H

+ 1 - 1
QFD/widgets/AppInfoWidget.cpp

@@ -86,7 +86,7 @@ void AppInfoWidget::initLayout()
 void AppInfoWidget::refresh()
 {
     m_verValueLabel->setText(qApp->applicationVersion());
-    m_contentValueLabel->setText("Bug fixes and improvements");
+    m_contentValueLabel->setText("问题修复、功能改进");
     m_dateValueLabel->setText("2023年7月24日");
     m_envValueLabel->setText(SysInfoExt::getCpuName());
     m_confirmButton->hide();

+ 20 - 20
QFD/view/CreateProjView.cpp → QFD/widgets/CreateProjWidget.cpp

@@ -1,4 +1,4 @@
-#include "CreateProjView.h"
+#include "CreateProjWidget.h"
 
 #include <Widgets/LineEdit.h>
 #include <Widgets/Button.h>
@@ -9,7 +9,7 @@
 
 #include <QDebug>
 
-CreateProjView::CreateProjView(QWidget *parent) : QWidget(parent)
+CreateProjWidget::CreateProjWidget(QWidget *parent) : QWidget(parent)
 {
     initWindow();
     initialize();
@@ -17,29 +17,29 @@ CreateProjView::CreateProjView(QWidget *parent) : QWidget(parent)
     connectSignalsAndSlots();
 }
 
-const QString CreateProjView::projName() const
+const QString CreateProjWidget::projName() const
 {
     return m_nameLineEdit->text();
 }
 
-bool CreateProjView::importanceSelected() const
+bool CreateProjWidget::importanceSelected() const
 {
     return m_importanceCheckBox->isChecked();
 }
 
-bool CreateProjView::schemeSelected() const
+bool CreateProjWidget::schemeSelected() const
 {
     return m_schemeCheckBox->isChecked();
 }
 
-void CreateProjView::clearInputs()
+void CreateProjWidget::clearInputs()
 {
     m_nameLineEdit->clear();
     m_importanceCheckBox->setChecked(false);
     m_schemeCheckBox->setChecked(false);
 }
 
-void CreateProjView::initWindow()
+void CreateProjWidget::initWindow()
 {
     setWindowTitle("新建工程");
     setWindowFlags(Qt::Window);
@@ -47,7 +47,7 @@ void CreateProjView::initWindow()
     resize(400, 200);
 }
 
-void CreateProjView::initialize()
+void CreateProjWidget::initialize()
 {
     m_gridLayout = new QGridLayout(this);
     m_nameLabel  = new QLabel(this);
@@ -65,7 +65,7 @@ void CreateProjView::initialize()
     m_cancelButton = new PushButton("取消", this);
 }
 
-void CreateProjView::initLayout()
+void CreateProjWidget::initLayout()
 {
     m_gridLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
     m_gridLayout->setContentsMargins(50, 20, 50, 20);
@@ -84,16 +84,16 @@ void CreateProjView::initLayout()
     m_gridLayout->addWidget(m_cancelButton, 10, 5, 1, 1, Qt::AlignLeft);
 }
 
-void CreateProjView::connectSignalsAndSlots()
+void CreateProjWidget::connectSignalsAndSlots()
 {
-    connect(m_nameLineEdit, &LineEdit::textChanged, this, &CreateProjView::slotTextChanged);
-    connect(m_importanceCheckBox, &CheckBox::stateChanged, this, &CreateProjView::slotCheckBoxChanged);
-    connect(m_schemeCheckBox, &CheckBox::stateChanged, this, &CreateProjView::slotCheckBoxChanged);
-    connect(m_createButton, &PushButton::clicked, this, &CreateProjView::slotCreateClicked);
-    connect(m_cancelButton, &PushButton::clicked, this, &CreateProjView::slotCancelClicked);
+    connect(m_nameLineEdit, &LineEdit::textChanged, this, &CreateProjWidget::slotTextChanged);
+    connect(m_importanceCheckBox, &CheckBox::stateChanged, this, &CreateProjWidget::slotCheckBoxChanged);
+    connect(m_schemeCheckBox, &CheckBox::stateChanged, this, &CreateProjWidget::slotCheckBoxChanged);
+    connect(m_createButton, &PushButton::clicked, this, &CreateProjWidget::slotCreateClicked);
+    connect(m_cancelButton, &PushButton::clicked, this, &CreateProjWidget::slotCancelClicked);
 }
 
-void CreateProjView::updateCreateButtonState()
+void CreateProjWidget::updateCreateButtonState()
 {
     bool nameValid = m_nameLineEdit->text().length() > 0;
     bool typeValid = m_importanceCheckBox->isChecked() || m_schemeCheckBox->isChecked();
@@ -101,24 +101,24 @@ void CreateProjView::updateCreateButtonState()
     m_createButton->setEnabled(nameValid && typeValid);
 }
 
-void CreateProjView::slotTextChanged(const QString &text)
+void CreateProjWidget::slotTextChanged(const QString &text)
 {
     m_nameLineEdit->setText(text.trimmed());
     updateCreateButtonState();
 }
 
-void CreateProjView::slotCheckBoxChanged(int)
+void CreateProjWidget::slotCheckBoxChanged(int)
 {
     updateCreateButtonState();
 }
 
-void CreateProjView::slotCreateClicked()
+void CreateProjWidget::slotCreateClicked()
 {
     emit signalCreate();
     close();
 }
 
-void CreateProjView::slotCancelClicked()
+void CreateProjWidget::slotCancelClicked()
 {
     close();
 }

+ 5 - 7
QFD/view/CreateProjView.h → QFD/widgets/CreateProjWidget.h

@@ -1,5 +1,5 @@
-#ifndef CREATEPROJVIEW_H
-#define CREATEPROJVIEW_H
+#ifndef CREATEPROJWIDGET_H
+#define CREATEPROJWIDGET_H
 
 #include <QWidget>
 
@@ -9,14 +9,12 @@ class LineEdit;
 class CheckBox;
 class PushButton;
 
-///
-/// \brief The CreateProjView class
 /// 创建工程页面
-class CreateProjView : public QWidget
+class CreateProjWidget : public QWidget
 {
     Q_OBJECT
 public:
-    CreateProjView(QWidget *parent = nullptr);
+    CreateProjWidget(QWidget *parent = nullptr);
 
     const QString projName() const;
 
@@ -52,4 +50,4 @@ private:
     PushButton *m_cancelButton     = nullptr;
 };
 
-#endif  // CREATEPROJVIEW_H
+#endif  // CREATEPROJWIDGET_H

+ 28 - 14
QFD/view/ExpertInfoView.cpp → QFD/widgets/ExpertInfoWidget.cpp

@@ -1,4 +1,4 @@
-#include "ExpertInfoView.h"
+#include "ExpertInfoWidget.h"
 
 #include <Widgets/LineEdit.h>
 #include <Widgets/Button.h>
@@ -7,7 +7,7 @@
 #include <QGridLayout>
 #include <QLabel>
 
-ExpertInfoView::ExpertInfoView(QWidget *parent) : QWidget(parent)
+ExpertInfoWidget::ExpertInfoWidget(QWidget *parent) : QWidget(parent)
 {
     initWindow();
     initialize();
@@ -16,13 +16,13 @@ ExpertInfoView::ExpertInfoView(QWidget *parent) : QWidget(parent)
     updateState();
 }
 
-void ExpertInfoView::setMode(ExpertInfoView::Mode mode)
+void ExpertInfoWidget::setMode(ExpertInfoWidget::Mode mode)
 {
     m_mode = mode;
     updateState();
 }
 
-void ExpertInfoView::clearInputs()
+void ExpertInfoWidget::clearInputs()
 {
     m_idLineEdit->clear();
     m_passwordLineEdit->clear();
@@ -35,14 +35,14 @@ void ExpertInfoView::clearInputs()
     updateState();
 }
 
-void ExpertInfoView::initWindow()
+void ExpertInfoWidget::initWindow()
 {
     setWindowFlags(Qt::Window);
     setWindowFlag(Qt::WindowMinMaxButtonsHint, false);
-    resize(400, 600);
+    resize(400, 450);
 }
 
-void ExpertInfoView::initialize()
+void ExpertInfoWidget::initialize()
 {
     int editWidth = 300;
 
@@ -84,13 +84,14 @@ void ExpertInfoView::initialize()
     m_noteLabel->setText("备注:");
     m_noteTextEdit = new TextEdit(this);
     m_noteTextEdit->setFixedWidth(editWidth);
+    m_noteTextEdit->setFixedHeight(100);
 
     m_hBoxLayout    = new QHBoxLayout();
     m_confirmButton = new PushButton("确认", this);
     m_cancelButton  = new PushButton("取消", this);
 }
 
-void ExpertInfoView::initLayout()
+void ExpertInfoWidget::initLayout()
 {
     m_vBoxLayout->setContentsMargins(20, 10, 20, 10);
     m_vBoxLayout->addLayout(m_gridLayout);
@@ -120,13 +121,13 @@ void ExpertInfoView::initLayout()
     m_hBoxLayout->addWidget(m_cancelButton);
 }
 
-void ExpertInfoView::connectSignalsAndSlots()
+void ExpertInfoWidget::connectSignalsAndSlots()
 {
-    connect(m_confirmButton, &PushButton::clicked, this, &ExpertInfoView::slotConfirm);
-    connect(m_cancelButton, &PushButton::clicked, this, &ExpertInfoView::slotCancel);
+    connect(m_confirmButton, &PushButton::clicked, this, &ExpertInfoWidget::slotConfirm);
+    connect(m_cancelButton, &PushButton::clicked, this, &ExpertInfoWidget::slotCancel);
 }
 
-void ExpertInfoView::updateState()
+void ExpertInfoWidget::updateState()
 {
     switch (m_mode) {
     case Add: {
@@ -140,14 +141,27 @@ void ExpertInfoView::updateState()
         setWindowTitle("用户信息");
     }
     }
+
+    bool editEnabled = m_mode != Read;
+    m_idLineEdit->setEnabled(editEnabled);
+    m_passwordLineEdit->setEnabled(editEnabled);
+    m_nameLineEdit->setEnabled(editEnabled);
+    m_companyLineEdit->setEnabled(editEnabled);
+    m_jobLineEdit->setEnabled(editEnabled);
+    m_majorLineEdit->setEnabled(editEnabled);
+    m_idLineEdit->setEnabled(editEnabled);
+    m_contactInfoLineEdit->setEnabled(editEnabled);
+    m_noteTextEdit->setEnabled(editEnabled);
+    m_confirmButton->setHidden(!editEnabled);
+    m_cancelButton->setHidden(!editEnabled);
 }
 
-void ExpertInfoView::slotConfirm()
+void ExpertInfoWidget::slotConfirm()
 {
     close();
 }
 
-void ExpertInfoView::slotCancel()
+void ExpertInfoWidget::slotCancel()
 {
     close();
 }

+ 6 - 7
QFD/view/ExpertInfoView.h → QFD/widgets/ExpertInfoWidget.h

@@ -1,5 +1,5 @@
-#ifndef EXPERTINFOVIEW_H
-#define EXPERTINFOVIEW_H
+#ifndef EXPERTINFOWIDGET_H
+#define EXPERTINFOWIDGET_H
 
 #include <QWidget>
 
@@ -14,12 +14,12 @@ class QGridLayout;
 class QLabel;
 
 ///
-/// \brief The ExpertInfoView class
 /// 专家信息页面
-class ExpertInfoView : public QWidget
+class ExpertInfoWidget : public QWidget
 {
     Q_OBJECT
 
+public:
     enum Mode
     {
         Add,     // 新增
@@ -27,8 +27,7 @@ class ExpertInfoView : public QWidget
         Read,    // 查看
     };
 
-public:
-    explicit ExpertInfoView(QWidget *parent = nullptr);
+    explicit ExpertInfoWidget(QWidget *parent = nullptr);
 
     void setMode(Mode mode);
 
@@ -83,4 +82,4 @@ private:
     PushButton *m_cancelButton  = nullptr;
 };
 
-#endif  // EXPERTINFOVIEW_H
+#endif  // EXPERTINFOWIDGET_H

+ 24 - 1
QFD/widgets/ExpertListWidget.cpp

@@ -1,5 +1,10 @@
 #include "ExpertListWidget.h"
 
+#include "ExpertInfoWidget.h"
+
+#include <Widgets/Button.h>
+#include <Common/Icon.h>
+
 #include <QBoxLayout>
 #include <QListWidget>
 #include <QLabel>
@@ -10,6 +15,7 @@ ExpertListWidget::ExpertListWidget(QWidget *parent) : QWidget(parent)
 {
     initialize();
     initLayout();
+    connectSignalsAndSlots();
     refreshList();
 }
 
@@ -27,14 +33,18 @@ void ExpertListWidget::refreshList()
 
         QHBoxLayout *hBox = new QHBoxLayout(w);
         hBox->setSpacing(0);
-        hBox->setMargin(0);
+        hBox->setMargin(10);
 
         QLabel *idx = new QLabel(QString::number(i));
+        idx->setFixedWidth(20);
         hBox->addWidget(idx);
         hBox->addSpacing(10);
         QLabel *name = new QLabel(QString("专家%1").arg(i));
         hBox->addWidget(name);
         hBox->addStretch();
+
+        PushButton *deleteButton = new PushButton("删除", NEWFLICON(FluentIcon, DELETE), this);
+        hBox->addWidget(deleteButton, 0, Qt::AlignLeft);
     }
 }
 
@@ -45,9 +55,22 @@ void ExpertListWidget::initialize()
     m_expertListWidget->setAlternatingRowColors(true);
     m_expertListWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
                                       "255);alternate-background-color: rgb(244, 244, 255);}");
+    m_expertInfoWidget = new ExpertInfoWidget(this);
+    m_expertInfoWidget->setMode(ExpertInfoWidget::Read);
 }
 
 void ExpertListWidget::initLayout()
 {
     m_vBoxLayout->addWidget(m_expertListWidget);
 }
+
+void ExpertListWidget::connectSignalsAndSlots()
+{
+    connect(m_expertListWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotListItemClicked);
+}
+
+void ExpertListWidget::slotListItemClicked(QListWidgetItem *item)
+{
+    qDebug() << __FUNCTION__ << __LINE__ << item->text();
+    m_expertInfoWidget->show();
+}

+ 9 - 0
QFD/widgets/ExpertListWidget.h

@@ -3,8 +3,11 @@
 
 #include <QWidget>
 
+class ExpertInfoWidget;
+
 class QVBoxLayout;
 class QListWidget;
+class QListWidgetItem;
 
 ///
 /// \brief The ExpertListWidget class
@@ -22,10 +25,16 @@ signals:
 private:
     void initialize();
     void initLayout();
+    void connectSignalsAndSlots();
+
+private slots:
+    void slotListItemClicked(QListWidgetItem *item);
 
 private:
     QVBoxLayout *m_vBoxLayout       = nullptr;
     QListWidget *m_expertListWidget = nullptr;
+
+    ExpertInfoWidget *m_expertInfoWidget = nullptr;
 };
 
 #endif  // EXPERTLISTWIDGET_H