#include "EXLoginWidget.h" #include "EXConfig.h" #include #include #include #include #include #include #include #include #include "MainWindow.h" EXLoginWidget::EXLoginWidget(QWidget *parent) : QWidget(parent) { initialize(); initLayout(); connectSignalsAndSlots(); loadAccount(); resize(500, 500); } void EXLoginWidget::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 EXLoginWidget::setTitle(const QString title) { m_titleLabel->setText(title); } const QString EXLoginWidget::account() const { return m_accLineEdit->text(); } const QString EXLoginWidget::password() const { return m_pwLineEdit->text(); } bool EXLoginWidget::rememberPassword() const { return m_remCheckBox->isChecked(); } void EXLoginWidget::saveAccountConfig() const { bool rem = m_remCheckBox->isChecked(); EXConfig::setRememberPassword(rem); if (rem) { EXConfig::setUsername(m_accLineEdit->text()); EXConfig::setPassword(m_pwLineEdit->text()); } } void EXLoginWidget::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_remLayout = new QHBoxLayout(); m_remCheckBox = new CheckBox("记住密码", this); m_remCheckBox->setHidden(true); const QString &s = m_remCheckBox->styleSheet() + "CheckBox {color:white}"; m_remCheckBox->setStyleSheet(s); m_buttonLayout = new QHBoxLayout(); m_loginButton = new PushButton("登录", this); m_cancelButton = new PushButton("取消", this); m_adminTips = new QLabel(this); m_adminTips->setText("默认管理员账号密码是admin/admin"); m_adminTips->setStyleSheet("color:#dddddd"); } void EXLoginWidget::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->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); m_vBoxLayout->addSpacing(10); m_vBoxLayout->addWidget(m_adminTips); } void EXLoginWidget::connectSignalsAndSlots() { connect(m_loginButton, &PushButton::clicked, this, &EXLoginWidget::slotLogin); connect(m_cancelButton, &PushButton::clicked, this, &EXLoginWidget::slotCancelLogin); } void EXLoginWidget::loadAccount() { int roleType = EXConfig::roleType(); if (roleType == QFUser::SuperAdmin) { setTitle("管理员登录"); } else { setTitle("专家登录"); } // bool rem = EXConfig::rememberPassword(); // m_remCheckBox->setChecked(rem); // if (rem) { // m_accLineEdit->setText(EXConfig::username()); // m_pwLineEdit->setText(EXConfig::password()); // } m_adminTips->setHidden(EXConfig::passwordModified()); } void EXLoginWidget::slotCancelLogin() { exit(0); } void EXLoginWidget::slotLogin() { QString account = m_accLineEdit->text(); QString password = m_pwLineEdit->text(); QFUser user(account, password); int code = user.login(); qDebug() << __FUNCTION__ << __LINE__ << "login code:" << account << password << code; if ((code == QF_CODE_SUCCEEDED || code == QF_CODE_ALREADY_LOGIN) && QFUser::currentUser() != nullptr) { MainWindow *m = new MainWindow(user.projectId.toInt(), nullptr); m->setAttribute(Qt::WA_DeleteOnClose); m->show(); this->close(); // this->close(); } else { qDebug() << "-----------失败"; // QFDAlert::showAlertWithCode(code, this); } }