| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #include "tlogin.h"
- #include "appevent.h"
- #include "qlabel.h"
- #include "qlineedit.h"
- #include <QGroupBox>
- #include <QMessageBox>
- #include <QMouseEvent>
- #include <QRegExpValidator>
- #include "qpushbutton.h"
- #include "qstyle.h"
- #include "qwidget.h"
- #include "utils/layoutbuilder.h"
- #include "api/tloginapi.h"
- TLogin::TLogin(QWidget *parent)
- : QDialog(parent)
- {
- setObjectName("Login");
- setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
- setWindowTitle(tr("Login"));
- using namespace Layouting;
- info = new QLabel;
- info->setStyleSheet("color: white;");
- info->setText(tr("link failure"));
- // 创建登录组件
- usernameEdit = new QLineEdit();
- usernameEdit->setPlaceholderText(tr("Enter your user name"));
- passwordEdit = new QLineEdit();
- // passwordEdit->setEchoMode(QLineEdit::Password);
- passwordEdit->setPlaceholderText(tr("Enter your ExamNo"));
- // QRegExp regExp("[a-zA-Z0-9]{6,12}");
- // QValidator *validator = new QRegExpValidator(regExp, passwordEdit);
- // passwordEdit->setValidator(validator);
- QWidget *w = Group{Column{Row{st, tr("Login"), st},
- Form{tr("Username:"), usernameEdit, br, tr("ExamNo:"), passwordEdit},
- PushButton{bindTo(&loginPushButton),
- text(tr("Login")),
- onClicked(std::bind(&TLogin::on_login_clicked, this))}}}
- .emerge();
- QPushButton *close;
- auto h = Row{"", st, PushButton{bindTo(&close), "test"}};
- Column{h, st, Row{st, w, st}, st, info, noMargin}.attachTo(this);
- QString styleSheet = R"(
- QDialog#Login {
- background-image: url(:/bg/bg1.png);
- }
- QGroupBox {
- background-color: rgba(255, 255, 255, 128);
- }
- )";
- setStyleSheet(styleSheet);
- QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);
- close->setIcon(closePix);
- close->setStyleSheet(R"__(
- QPushButton {
- border: none;
- background-color: #ffffff; /* 红色背景 */
- color: white; /* 文字颜色 */
- padding: 10px 10px; /* 内边距 */
- text-align: center; /* 文字居中 */
- text-decoration: none; /* 去掉下划线 */
- font-size: 12px; /* 字体大小 */
- margin: 2px 2px; /* 外边距 */
- border-radius: 10px; /* 圆角 */
- }
- QPushButton:hover {
- background-color: #d32f2f; /* 鼠标悬停时背景色 */
- }
- )__");
- resize({400, 400});
- // usernameEdit->setText("test");
- // passwordEdit->setText("SW1111112");
- loginPushButton->setDisabled(true);
- QObject::connect(close, &QPushButton::clicked, this, &TLogin::close);
- // QObject::connect(AppEvent::instance(), &AppEvent::serverLinkSignals, this, [this](bool isok) {
- // if (isok) {
- // info->setText(tr("link succeeded"));
- // loginPushButton->setDisabled(false);
- // } else {
- // info->setText(tr("link failure"));
- // loginPushButton->setDisabled(true);
- // }
- // });
- }
- void TLogin::mousePressEvent(QMouseEvent *event)
- {
- if (event->button() == Qt::LeftButton) {
- m_dragPosition = event->globalPos() - frameGeometry().topLeft();
- event->accept();
- }
- }
- void TLogin::mouseMoveEvent(QMouseEvent *event)
- {
- if (event->buttons() & Qt::LeftButton) {
- move(event->globalPos() - m_dragPosition);
- event->accept();
- }
- }
- void TLogin::on_login_clicked()
- {
- const QString userName = usernameEdit->text();
- const QString password = passwordEdit->text();
- if (userName.isEmpty() || password.isEmpty()) {
- QMessageBox::warning(this,
- tr("Login failed"),
- tr("User name or password error, please try again."));
- return;
- }
- bool ok = TC::Login(userName, password).post();
- if (ok && AppEvent::instance()->isLogin()) {
- // 登录成功,发出信号
- emit loginSuccessful();
- close();
- } else {
- // 登录失败,显示提示框
- QMessageBox::warning(this,
- tr("Login failed"),
- tr("User name or password error, please try again."));
- return;
- }
- }
|