chengxr hai 1 ano
pai
achega
c3305da1cd

+ 2 - 2
QFD/main.cpp

@@ -1,5 +1,5 @@
-#include "LoginView.h"
-#include "MainWindow.h"
+#include "view/LoginView.h"
+#include "view/MainWindow.h"
 
 #include <QApplication>
 

+ 67 - 3
QFD/view/LoginView.cpp

@@ -1,8 +1,21 @@
 #include "LoginView.h"
 
+#include "LoginWidget.h"
+#include "RegisterWidget.h"
+
 #include <QPainter>
+#include <QBoxLayout>
+#include <QStackedWidget>
+
+#include <QDebug>
 
-LoginView::LoginView(QWidget *parent) : QWidget(parent) { }
+LoginView::LoginView(QWidget *parent) : QWidget(parent)
+{
+    initialize();
+    initLayout();
+    setStackIndex(0);
+    connectSignalsAndSlots();
+}
 
 void LoginView::paintEvent(QPaintEvent *event)
 {
@@ -13,6 +26,57 @@ void LoginView::paintEvent(QPaintEvent *event)
                        pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
 }
 
-void LoginView::initialize() { }
+void LoginView::setStackIndex(int index)
+{
+    m_stackedWidget->setCurrentIndex(index % m_stackedWidget->count());
+}
+
+void LoginView::initialize()
+{
+    m_vBoxLayout    = new QVBoxLayout();
+    m_stackedWidget = new QStackedWidget(this);
+    m_loginWidget   = new LoginWidget(this);
+    m_loginWidget->setTitle("登录管理员账号");
+    m_registerWidget = new RegisterWidget(this);
+}
+
+void LoginView::initLayout()
+{
+    setLayout(m_vBoxLayout);
+    m_vBoxLayout->setAlignment(Qt::AlignCenter);
+    m_vBoxLayout->addWidget(m_stackedWidget);
+    m_stackedWidget->addWidget(m_loginWidget);
+    m_stackedWidget->addWidget(m_registerWidget);
+}
+
+void LoginView::connectSignalsAndSlots()
+{
+    connect(m_loginWidget, &LoginWidget::signalLogin, this, &LoginView::slotLogin);
+    connect(m_loginWidget, &LoginWidget::signalCancel, this, &LoginView::slotCancelLogin);
+    connect(m_registerWidget, &RegisterWidget::signalConfirm, this, &LoginView::slotConfirmAcc);
+    connect(m_registerWidget, &RegisterWidget::signalCancel, this, &LoginView::slotCancelAcc);
+}
 
-void LoginView::initLayout() { }
+void LoginView::slotLogin()
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+    setStackIndex(m_stackedWidget->currentIndex() + 1);
+}
+
+void LoginView::slotCancelLogin()
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+    setStackIndex(m_stackedWidget->currentIndex() + 1);
+}
+
+void LoginView::slotConfirmAcc()
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+    setStackIndex(m_stackedWidget->currentIndex() + 1);
+}
+
+void LoginView::slotCancelAcc()
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+    setStackIndex(m_stackedWidget->currentIndex() + 1);
+}

+ 17 - 2
QFD/view/LoginView.h

@@ -3,9 +3,12 @@
 
 #include <QWidget>
 
-class QBoxLayout;
+class QVBoxLayout;
 class QStackedWidget;
 
+class LoginWidget;
+class RegisterWidget;
+
 class LoginView : public QWidget
 {
     Q_OBJECT
@@ -14,13 +17,25 @@ public:
 
     void paintEvent(QPaintEvent *event) override;
 
+    void setStackIndex(int index);
+
 private:
     void initialize();
     void initLayout();
+    void connectSignalsAndSlots();
+
+private slots:
+    void slotLogin();
+    void slotCancelLogin();
+    void slotConfirmAcc();
+    void slotCancelAcc();
 
 private:
-    QBoxLayout *m_boxLayout         = nullptr;
+    QVBoxLayout *m_vBoxLayout       = nullptr;
     QStackedWidget *m_stackedWidget = nullptr;
+
+    LoginWidget *m_loginWidget       = nullptr;
+    RegisterWidget *m_registerWidget = nullptr;
 };
 
 #endif  // LOGINVIEW_H

+ 5 - 14
QFD/view/MainWindow.cpp

@@ -3,7 +3,6 @@
 #include "LoginView.h"
 #include "AboutView.h"
 
-#include <DateTime/DatePicker.h>
 #include <QFramelessWindow.h>
 #include <TitleBar.h>
 
@@ -20,10 +19,8 @@ StackedWidget::StackedWidget(QWidget *parent) : QFrame(parent)
     m_hBoxLayout->setContentsMargins(0, 0, 0, 0);
     m_hBoxLayout->addWidget(m_view);
 
-    connect(m_view, &PopUpAniStackedWidget::currentChanged, this, [this](int index) {
-        qDebug() << __FUNCTION__ << __LINE__;
-        emit currentWidgetChanged(m_view->widget(index));
-    });
+    connect(m_view, &PopUpAniStackedWidget::currentChanged, this,
+            [this](int index) { emit currentWidgetChanged(m_view->widget(index)); });
 
     //    setStyleSheet("background-color: rgb(0,222,222);");
 }
@@ -39,17 +36,14 @@ void StackedWidget::addWidget(QWidget *widget)
 void StackedWidget::setCurrentWidget(QWidget *widget, bool popOut)
 {
     if (popOut) {
-        qDebug() << __FUNCTION__ << __LINE__;
         m_view->setCurrentWidget(widget, true, false, 200, QEasingCurve::InQuad);
     } else {
-        qDebug() << __FUNCTION__ << __LINE__;
         m_view->setCurrentWidget(widget, false, true, 300);
     }
 }
 
 void StackedWidget::setCurrentIndex(int index, bool popOut)
 {
-    qDebug() << __FUNCTION__ << __LINE__;
     setCurrentWidget(m_view->widget(index), popOut);
 }
 
@@ -129,10 +123,8 @@ void MainWindow::initNavigation()
 
     m_naviInterface->setDefaultRouteKey(m_loginView->objectName());
 
-    connect(m_stackWidget, &StackedWidget::currentWidgetChanged, this, [this](QWidget *w) {
-        m_naviInterface->setCurrentItem(w->objectName());
-        qDebug() << "current" << m_stackWidget->view()->currentIndex();
-    });
+    connect(m_stackWidget, &StackedWidget::currentWidgetChanged, this,
+            [this](QWidget *w) { m_naviInterface->setCurrentItem(w->objectName()); });
     m_naviInterface->setCurrentItem(m_loginView->objectName());
     m_stackWidget->setCurrentIndex(0);
 }
@@ -155,6 +147,7 @@ int MainWindow::titleBarIndent() const
 
 void MainWindow::resizeEvent(QResizeEvent *event)
 {
+    Q_UNUSED(event)
     m_titleBar->resize(width() - titleBarIndent(), m_titleBar->height());
 }
 
@@ -166,12 +159,10 @@ void MainWindow::switchTo(QWidget *widget, bool triggerByUser)
 
 void MainWindow::loginViewClicked()
 {
-    qDebug() << __FUNCTION__ << __LINE__;
     switchTo(m_loginView);
 }
 
 void MainWindow::aboutViewClicked()
 {
-    qDebug() << __FUNCTION__ << __LINE__;
     switchTo(m_aboutView);
 }

+ 79 - 1
QFD/widgets/LoginWidget.cpp

@@ -1,6 +1,84 @@
-#include "LoginWidget.h"
+#include "LoginWidget.h"
+
+#include <Widgets/LineEdit.h>
+#include <Widgets/CheckBox.h>
+#include <Widgets/Button.h>
+
+#include <QBoxLayout>
+#include <QLabel>
 
 LoginWidget::LoginWidget(QWidget *parent) : QWidget(parent)
 {
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+}
+
+void LoginWidget::setTitle(const QString title)
+{
+    m_titleLabel->setText(title);
+}
+
+void LoginWidget::initialize()
+{
+    m_vBoxLayout = new QVBoxLayout(this);
+
+    m_titleLabel = new QLabel(this);
+    m_titleLabel->setStyleSheet("color:#ffffff;");
+    QFont ft;
+    ft.setPointSize(15);
+    ft.setBold(true);
+    m_titleLabel->setFont(ft);
+
+    m_accLineEdit = new LineEdit(this);
+    m_accLineEdit->setIsClearButtonEnabled(true);
+    m_accLineEdit->setPlaceholderText("请输入账号");
+    m_accLineEdit->setFixedWidth(250);
+
+    m_pwLineEdit = new PasswordLineEdit(this);
+    m_pwLineEdit->setPlaceholderText("请输入密码");
+    m_pwLineEdit->setFixedWidth(250);
+    m_pwLineEdit->setEchoMode(QLineEdit::Password);
+
+    m_remLayout   = new QHBoxLayout();
+    m_remCheckBox = new CheckBox(" ", this);
+    m_remCheckBox->setMaximumWidth(20);
+    m_remLabel = new QLabel(this);
+    m_remLabel->setText("记住密码");
+    m_remLabel->setStyleSheet("color:#ffffff;");
+
+    m_buttonLayout = new QHBoxLayout();
+    m_loginButton  = new PushButton("登录", this);
+    m_cancelButton = new PushButton("取消", this);
+}
+
+void LoginWidget::initLayout()
+{
+    setLayout(m_vBoxLayout);
+    m_vBoxLayout->setAlignment(Qt::AlignCenter);
+
+    m_vBoxLayout->addWidget(m_titleLabel);
+    m_vBoxLayout->addSpacing(20);
+    m_vBoxLayout->addWidget(m_accLineEdit);
+    m_vBoxLayout->addSpacing(20);
+    m_vBoxLayout->addWidget(m_pwLineEdit);
+    m_vBoxLayout->addSpacing(20);
 
+    m_vBoxLayout->addLayout(m_remLayout);
+    m_remLayout->addWidget(m_remCheckBox);
+    m_remLayout->addWidget(m_remLabel);
+    m_remLayout->addSpacing(30);
+
+    m_vBoxLayout->addSpacing(40);
+
+    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_buttonLayout->addWidget(m_loginButton);
+    m_buttonLayout->addSpacing(20);
+    m_buttonLayout->addWidget(m_cancelButton);
+}
+
+void LoginWidget::connectSignalsAndSlots()
+{
+    connect(m_loginButton, &PushButton::clicked, this, &LoginWidget::signalLogin);
+    connect(m_cancelButton, &PushButton::clicked, this, &LoginWidget::signalCancel);
 }

+ 28 - 0
QFD/widgets/LoginWidget.h

@@ -5,6 +5,12 @@
 
 class LineEdit;
 class PasswordLineEdit;
+class CheckBox;
+class PushButton;
+
+class QVBoxLayout;
+class QLabel;
+class QHBoxLayout;
 
 class LoginWidget : public QWidget
 {
@@ -12,9 +18,31 @@ class LoginWidget : public QWidget
 public:
     explicit LoginWidget(QWidget *parent = nullptr);
 
+    void setTitle(const QString title);
+
+private:
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+
 signals:
+    void signalLogin();
+    void signalCancel();
 
 private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+
+    QLabel *m_titleLabel           = nullptr;
+    LineEdit *m_accLineEdit        = nullptr;
+    PasswordLineEdit *m_pwLineEdit = nullptr;
+
+    QHBoxLayout *m_remLayout = nullptr;
+    CheckBox *m_remCheckBox  = nullptr;
+    QLabel *m_remLabel       = nullptr;
+
+    QHBoxLayout *m_buttonLayout = nullptr;
+    PushButton *m_loginButton   = nullptr;
+    PushButton *m_cancelButton  = nullptr;
 };
 
 #endif  // LOGINWIDGET_H

+ 65 - 1
QFD/widgets/RegisterWidget.cpp

@@ -1,6 +1,70 @@
-#include "RegisterWidget.h"
+#include "RegisterWidget.h"
+
+#include <Widgets/LineEdit.h>
+#include <Widgets/Button.h>
+
+#include <QBoxLayout>
+#include <QLabel>
 
 RegisterWidget::RegisterWidget(QWidget *parent) : QWidget(parent)
 {
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+}
+
+void RegisterWidget::initialize()
+{
+    m_vBoxLayout = new QVBoxLayout(this);
+
+    m_titleLabel = new QLabel(this);
+    m_titleLabel->setText("新账号");
+    m_titleLabel->setStyleSheet("color:#ffffff;");
+    QFont ft;
+    ft.setPointSize(15);
+    ft.setBold(true);
+    m_titleLabel->setFont(ft);
+
+    m_accLineEdit = new LineEdit(this);
+    m_accLineEdit->setIsClearButtonEnabled(true);
+    m_accLineEdit->setPlaceholderText("账号id");
+    m_accLineEdit->setFixedWidth(250);
+
+    m_pwLineEdit = new PasswordLineEdit(this);
+    m_pwLineEdit->setPlaceholderText("新密码");
+    m_pwLineEdit->setFixedWidth(250);
+
+    m_pw2LineEdit = new PasswordLineEdit(this);
+    m_pw2LineEdit->setPlaceholderText("确认密码");
+    m_pw2LineEdit->setFixedWidth(250);
 
+    m_buttonLayout  = new QHBoxLayout();
+    m_confirmButton = new PushButton("确定", this);
+    m_cancelButton  = new PushButton("取消", this);
+}
+
+void RegisterWidget::initLayout()
+{
+    setLayout(m_vBoxLayout);
+    m_vBoxLayout->setAlignment(Qt::AlignCenter);
+
+    m_vBoxLayout->addWidget(m_titleLabel);
+    m_vBoxLayout->addSpacing(20);
+    m_vBoxLayout->addWidget(m_accLineEdit);
+    m_vBoxLayout->addSpacing(20);
+    m_vBoxLayout->addWidget(m_pwLineEdit);
+    m_vBoxLayout->addSpacing(20);
+    m_vBoxLayout->addWidget(m_pw2LineEdit);
+    m_vBoxLayout->addSpacing(40);
+
+    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_buttonLayout->addWidget(m_confirmButton);
+    m_buttonLayout->addSpacing(20);
+    m_buttonLayout->addWidget(m_cancelButton);
+}
+
+void RegisterWidget::connectSignalsAndSlots()
+{
+    connect(m_confirmButton, &PushButton::clicked, this, &RegisterWidget::signalConfirm);
+    connect(m_cancelButton, &PushButton::clicked, this, &RegisterWidget::signalCancel);
 }

+ 29 - 2
QFD/widgets/RegisterWidget.h

@@ -1,16 +1,43 @@
-#ifndef REGISTERWIDGET_H
+#ifndef REGISTERWIDGET_H
 #define REGISTERWIDGET_H
 
 #include <QWidget>
 
+class LineEdit;
+class PasswordLineEdit;
+class PushButton;
+
+class QVBoxLayout;
+class QLabel;
+class QHBoxLayout;
+
 class RegisterWidget : public QWidget
 {
     Q_OBJECT
 public:
     explicit RegisterWidget(QWidget *parent = nullptr);
 
+private:
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+
 signals:
+    void signalConfirm();
+    void signalCancel();
+
+private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+
+    QLabel *m_titleLabel = nullptr;
+
+    LineEdit *m_accLineEdit         = nullptr;
+    PasswordLineEdit *m_pwLineEdit  = nullptr;
+    PasswordLineEdit *m_pw2LineEdit = nullptr;
 
+    QHBoxLayout *m_buttonLayout = nullptr;
+    PushButton *m_confirmButton = nullptr;
+    PushButton *m_cancelButton  = nullptr;
 };
 
-#endif // REGISTERWIDGET_H
+#endif  // REGISTERWIDGET_H

+ 1 - 1
QFluentWidgets/DialogBox/ColorDialog.cpp

@@ -65,7 +65,7 @@ ColorLineEdit::ColorLineEdit(const QString &value, QWidget *parent) : LineEdit(p
 {
     setText(value);
     setFixedSize(136, 33);
-    setClearButtonEnabled(true);
+    setIsClearButtonEnabled(true);
     setValidator(new QIntValidator(0, 255, this));
 
     connect(this, &ColorLineEdit::textEdited, this, &ColorLineEdit::onTextEdited);

+ 2 - 2
QFluentWidgets/Widgets/LineEdit.cpp

@@ -143,7 +143,7 @@ SearchLineEdit::SearchLineEdit(QWidget *parent) : LineEdit(parent)
     m_searchButton       = new LineEditButton(NEWFLICON(FluentIcon, SEARCH), this);
     QHBoxLayout *hLayout = hBoxLayout();
     hLayout->addWidget(m_searchButton, 0, Qt::AlignRight);
-    setClearButtonEnabled(true);
+    setIsClearButtonEnabled(true);
     setTextMargins(0, 0, 59, 0);
 
     connect(m_searchButton, &LineEditButton::clicked, this, &SearchLineEdit::search);
@@ -165,7 +165,7 @@ PasswordLineEdit::PasswordLineEdit(QWidget *parent) : LineEdit(parent)
     m_echoButton         = new LineEditButton(NEWFLICON(FluentIcon, VIEW), this);
     QHBoxLayout *hLayout = hBoxLayout();
     hLayout->addWidget(m_echoButton, 0, Qt::AlignRight);
-    setClearButtonEnabled(true);
+    setIsClearButtonEnabled(true);
     setTextMargins(0, 0, 59, 0);
 
     connect(m_echoButton, &LineEditButton::clicked, this, &PasswordLineEdit::switchEchoMode);