#include "LoginView.h" #include "LoginWidget.h" #include "RegisterWidget.h" #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/login.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::slotLogin() { qDebug() << __FUNCTION__ << __LINE__; 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__; }