#include "LoginView.h" #include "LoginWidget.h" #include "RegisterWidget.h" #include #include #include #include #include #include LoginView::LoginView(QWidget *parent) : QWidget(parent) { initialize(); initLayout(); setStackIndex(0); connectSignalsAndSlots(); } void LoginView::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); QPixmap pixmap(":/resource/background/8.jpg"); painter.drawPixmap(0, 0, pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); } 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); connect(m_stackedWidget, &QStackedWidget::currentChanged, this, &LoginView::slotStackIndexChanged); } /// 提示登录错误信息 void LoginView::showLoginAlert(int code) const { if (code == QF_CODE_COMPLETED) { return; } QString msg; if (code == QF_CODE_EMPTY_USERNAME) { msg = "账号不能为空"; } else if (code == QF_CODE_EMPTY_PASSWORD) { msg = "密码不能为空"; } else if (code == QF_CODE_USER_NOT_EXISTS) { msg = "用户不存在"; } else if (code == QF_CODE_WRONG_PASSWORD) { msg = "密码错误"; } if (!msg.isEmpty()) { InfoBar::warning("提示", msg, Qt::Horizontal, false, 2000, InfoBarPosition::TOP_RIGHT, topLevelWidget()); } } void LoginView::slotLogin() { QFUser user(m_loginWidget->account(), m_loginWidget->password()); int code = user.login(); qDebug() << __FUNCTION__ << __LINE__ << "login code:" << code; if (code == QF_CODE_COMPLETED || code == QF_CODE_ALREADY_LOGIN) { m_loginWidget->saveAccountConfig(); // 登录成功后存储登录设置 if (QFUser::currentUser() != nullptr) { qDebug() << __FUNCTION__ << __LINE__ << QFUser::currentUser()->userName; } } else { showLoginAlert(code); } // setStackIndex(m_stackedWidget->currentIndex() + 1); // emit signalLogin(); } void LoginView::slotCancelLogin() { qDebug() << __FUNCTION__ << __LINE__; setStackIndex(m_stackedWidget->currentIndex() + 1); emit signalCancelLogin(); } void LoginView::slotConfirmAcc() { qDebug() << __FUNCTION__ << __LINE__; setStackIndex(m_stackedWidget->currentIndex() + 1); } void LoginView::slotCancelAcc() { qDebug() << __FUNCTION__ << __LINE__; setStackIndex(m_stackedWidget->currentIndex() + 1); } void LoginView::slotStackIndexChanged() { qDebug() << __FUNCTION__ << __LINE__; }