diff --git a/app/global.cpp b/app/global.cpp index 292ec13..4629db4 100644 --- a/app/global.cpp +++ b/app/global.cpp @@ -34,6 +34,15 @@ void stopBlink(QWidget* w, const char* prop) w->update(); } +QString cancelButtonStyle(int fontPx) +{ + return QString( + "QPushButton{font-size:%1px;}" + "QPushButton:hover,QPushButton:pressed,QPushButton:focus" + "{background-color:%2;color:#FFFFFF;border:2px solid #FFA6A9;}") + .arg(fontPx).arg(C::DANGER); +} + QString appStyleSheet() { const QString s = QString(R"QSS( @@ -151,11 +160,6 @@ QPushButton[numpad="true"]:focus { color: #FFFFFF; border: 2px solid #8ABFFF; } -QPushButton[cancel="true"]:focus { - background-color: DAN; - color: #FFFFFF; - border: 2px solid #FFA6A9; -} /* ===== 告警文字(红色闪烁由 blink 属性驱动) ===== */ QLabel[alert="true"] { color: DAN; font-weight: 700; } diff --git a/app/global.h b/app/global.h index 16136bd..d2bf4fb 100644 --- a/app/global.h +++ b/app/global.h @@ -115,6 +115,9 @@ QTimer* startBlink(QWidget* w, const char* prop = "blink"); // 关闭闪烁定时器并复位属性 void stopBlink(QWidget* w, const char* prop = "blink"); +// 退出/取消按钮预设样式:被选中(悬停/按下/焦点)时红底白字 +QString cancelButtonStyle(int fontPx = 60); + // 全局 QSS 样式表 QString appStyleSheet(); diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.cpp.2880E253A763ABEF.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.cpp.2880E253A763ABEF.idx index 232c8d7..4441e08 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.cpp.2880E253A763ABEF.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.cpp.2880E253A763ABEF.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.h.5F19AAB843B33CCE.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.h.5F19AAB843B33CCE.idx index 0fef6ee..f81d01f 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.h.5F19AAB843B33CCE.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/bootpassword.h.5F19AAB843B33CCE.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/confirmdialog.cpp.A07B26C68894B406.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/confirmdialog.cpp.A07B26C68894B406.idx index 4b36d3d..d62b8e7 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/confirmdialog.cpp.A07B26C68894B406.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/confirmdialog.cpp.A07B26C68894B406.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.cpp.3110D8C4024B8807.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.cpp.3110D8C4024B8807.idx index 5617160..4f0b5bb 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.cpp.3110D8C4024B8807.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.cpp.3110D8C4024B8807.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.h.04FEB1AA1BE5CBA9.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.h.04FEB1AA1BE5CBA9.idx index 10871be..81b3ead 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.h.04FEB1AA1BE5CBA9.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/global.h.04FEB1AA1BE5CBA9.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/numpaddialog.cpp.4EC97A520E700E9E.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/numpaddialog.cpp.4EC97A520E700E9E.idx index 209d1af..dcc1b2c 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/numpaddialog.cpp.4EC97A520E700E9E.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/numpaddialog.cpp.4EC97A520E700E9E.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmt.cpp.33B9EE5515D021E5.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmt.cpp.33B9EE5515D021E5.idx index 8eec46f..ee71df3 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmt.cpp.33B9EE5515D021E5.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmt.cpp.33B9EE5515D021E5.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmtlogin.cpp.AF231AAA0CBB48FC.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmtlogin.cpp.AF231AAA0CBB48FC.idx index e9b8fad..4ae3b93 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmtlogin.cpp.AF231AAA0CBB48FC.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordmgmtlogin.cpp.AF231AAA0CBB48FC.idx differ diff --git a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordreset.cpp.1B25930C84FBC9DF.idx b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordreset.cpp.1B25930C84FBC9DF.idx index 28b104a..00c013f 100644 Binary files a/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordreset.cpp.1B25930C84FBC9DF.idx and b/build/Desktop_Qt_5_15_2_MinGW_32_bit-Debug/.qtc_clangd/.cache/clangd/index/passwordreset.cpp.1B25930C84FBC9DF.idx differ diff --git a/pages/bootpassword.cpp b/pages/bootpassword.cpp index 3700abc..24e6696 100644 --- a/pages/bootpassword.cpp +++ b/pages/bootpassword.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include "global.h" BootPasswordPage::BootPasswordPage(AppContext* ctx, QWidget* parent) @@ -21,7 +20,7 @@ BootPasswordPage::BootPasswordPage(AppContext* ctx, QWidget* parent) col->setProperty("card", true); // 登录主体框体背景(面板色 + 圆角边框) QVBoxLayout* lay = new QVBoxLayout(col); lay->setContentsMargins(40, 40, 40, 40); // 框体内边距 - lay->setSpacing(50); + lay->setSpacing(30); lay->setAlignment(Qt::AlignHCenter); @@ -40,15 +39,15 @@ BootPasswordPage::BootPasswordPage(AppContext* ctx, QWidget* parent) m_input->setStyleSheet("font-size:80px"); m_input->setProperty("clickable", true); lay->addWidget(m_input, 0, Qt::AlignHCenter); - lay->addSpacing(40); + //lay->addSpacing(20); m_input->installEventFilter(this); m_input->setFocusPolicy(Qt::StrongFocus); - // 错误提示(默认隐藏) - m_error = label("密码输入有误,请重新输入", 80, C::DANGER, true, col); + // 错误提示(预留固定高度,出现/消失不影响下方按钮位置) + m_error = new QLabel(col); m_error->setAlignment(Qt::AlignCenter); - m_error->setStyleSheet("font-size:80px"); - m_error->hide(); + //m_error->setFixedHeight(30); + m_error->setStyleSheet("color:#E5484D;font-size:40px;font-weight:700;"); lay->addWidget(m_error); // 确认 / 取消 @@ -61,33 +60,22 @@ BootPasswordPage::BootPasswordPage(AppContext* ctx, QWidget* parent) connect(ok, &QPushButton::clicked, this, &BootPasswordPage::onConfirm); QPushButton* cancel = button("取消", "", col); cancel->setFixedSize(160, 140); - // 取消语义:选中时红底白字(内联 :focus,确保覆盖全局蓝色选中态) - cancel->setStyleSheet("font-size:60px;QPushButton:focus{background-color:#E5484D;color:#FFFFFF;border:2px solid #FFA6A9;}"); + cancel->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 connect(cancel, &QPushButton::clicked, this, &BootPasswordPage::onCancel); btnRow->addWidget(ok); btnRow->addWidget(cancel); btnRow->addStretch(1); lay->addLayout(btnRow); - // 忘记密码 / 修改密码(平时红字透明底,按下红底白字) + // 密码管理入口(平时红字透明底,按下红底白字) const QString linkBtnStyle = - "QPushButton{color:#E5484D;background:transparent;border:1px solid transparent;border-radius:6px;font-size:30px;}" + "QPushButton{color:#E5484D;background:transparent;border:1px solid transparent;border-radius:6px;font-size:40px;}" "QPushButton:hover,QPushButton:pressed,QPushButton:focus{background-color:#E5484D;color:#FFFFFF;border:1px solid #FFA6A9;}"; - QHBoxLayout* forgetRow = new QHBoxLayout(); - forgetRow->setSpacing(80); - forgetRow->addStretch(1); - QPushButton* forget = button("忘记密码", "", col); - forget->setFixedSize(130, 60); - forget->setStyleSheet(linkBtnStyle); - connect(forget, &QPushButton::clicked, this, &BootPasswordPage::onForget); - QPushButton* modify = button("修改密码", "", col); - modify->setFixedSize(130, 60); - modify->setStyleSheet(linkBtnStyle); - connect(modify, &QPushButton::clicked, this, &BootPasswordPage::onForget); - forgetRow->addWidget(forget); - forgetRow->addWidget(modify); - forgetRow->addStretch(1); - lay->addLayout(forgetRow); + QPushButton* mgmt = button("密码管理", "", col); + mgmt->setFixedSize(170, 60); + mgmt->setStyleSheet(linkBtnStyle); + connect(mgmt, &QPushButton::clicked, this, &BootPasswordPage::onMgmt); + lay->addWidget(mgmt, 0, Qt::AlignHCenter); root->addWidget(col, 0, Qt::AlignHCenter); root->addStretch(1); @@ -116,43 +104,24 @@ bool BootPasswordPage::eventFilter(QObject* obj, QEvent* ev) void BootPasswordPage::onInputClicked() { - if (m_locked) - return; NumPadDialog dlg(this); dlg.setMaxLen(4); dlg.setValue(m_value); if (dlg.exec() == QDialog::Accepted) { m_value = dlg.value(); - m_error->hide(); + m_error->setText(""); refreshInput(); } } void BootPasswordPage::onConfirm() { - if (m_locked) - return; - if (m_value == ctx()->password()) { - m_wrongCount = 0; clearInput(); emit navigate(PageSelfCheck); } else { - m_wrongCount++; clearInput(); - if (m_wrongCount >= 5) { - // 【设计建议】连续 5 次错误锁定 30s - m_locked = true; - m_error->setText("连续输入错误,已锁定 30 秒"); - m_error->show(); - QTimer::singleShot(30000, this, [this]() { - m_locked = false; - m_wrongCount = 0; - m_error->hide(); - }); - } else { - emit navigate(PageWarning); - } + m_error->setText("密码错误!"); } } @@ -161,15 +130,17 @@ void BootPasswordPage::onCancel() clearInput(); } -void BootPasswordPage::onForget() +void BootPasswordPage::onMgmt() { clearInput(); + // 密码管理:进入管理员登录界面 emit navigate(PageMgmtLogin); } void BootPasswordPage::clearInput() { m_value.clear(); + m_error->setText(""); refreshInput(); } diff --git a/pages/bootpassword.h b/pages/bootpassword.h index 6f38c24..700df9d 100644 --- a/pages/bootpassword.h +++ b/pages/bootpassword.h @@ -23,7 +23,7 @@ private slots: void onInputClicked(); void onConfirm(); void onCancel(); - void onForget(); + void onMgmt(); private: void refreshInput(); @@ -31,8 +31,6 @@ private: QLineEdit* m_input = nullptr; QLabel* m_error = nullptr; QString m_value; - int m_wrongCount = 0; - bool m_locked = false; }; #endif // BOOTPASSWORDPAGE_H diff --git a/pages/passwordmgmt.cpp b/pages/passwordmgmt.cpp index f7c3bd4..905dbc8 100644 --- a/pages/passwordmgmt.cpp +++ b/pages/passwordmgmt.cpp @@ -15,10 +15,10 @@ PasswordMgmtPage::PasswordMgmtPage(AppContext* ctx, QWidget* parent) QWidget* col = new QWidget(this); col->setFixedWidth(700); QVBoxLayout* lay = new QVBoxLayout(col); - lay->setSpacing(24); + lay->setSpacing(50); lay->setAlignment(Qt::AlignHCenter); - QLabel* title = label("密码管理界面", 28, C::TEXT, true, col); + QLabel* title = label("密码管理界面", 60, C::TEXT, true, col); title->setAlignment(Qt::AlignCenter); lay->addWidget(title); @@ -31,8 +31,8 @@ PasswordMgmtPage::PasswordMgmtPage(AppContext* ctx, QWidget* parent) m_reset = new QCheckBox("重置密码功能", option); m_reset->setChecked(true); m_reset->setStyleSheet(QString( - "QCheckBox{color:%1;font-size:26px;spacing:12px;}" - "QCheckBox::indicator{width:32px;height:32px;border:2px solid %2;border-radius:6px;background-color:%3;}" + "QCheckBox{color:%1;font-size:40px;spacing:16px;}" + "QCheckBox::indicator{width:40px;height:40px;border:2px solid %2;border-radius:6px;background-color:%3;}" "QCheckBox::indicator:checked{background-color:%4;border-color:%4;image:none;}") .arg(C::TEXT, C::BORDER, C::BG, C::PRIMARY)); optLay->addWidget(m_reset); @@ -40,12 +40,15 @@ PasswordMgmtPage::PasswordMgmtPage(AppContext* ctx, QWidget* parent) // 确认 / 退出 QHBoxLayout* btnRow = new QHBoxLayout(); + btnRow->setSpacing(80); btnRow->addStretch(1); QPushButton* ok = button("确认", "", col); - ok->setFixedSize(180, 72); + ok->setFixedSize(160, 140); + ok->setStyleSheet("font-size:60px;"); connect(ok, &QPushButton::clicked, this, [this]() { emit navigate(PageReset); }); QPushButton* exit = button("退出", "", col); - exit->setFixedSize(180, 72); + exit->setFixedSize(160, 140); + exit->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 connect(exit, &QPushButton::clicked, this, [this]() { emit navigate(PageBoot); }); btnRow->addWidget(ok); btnRow->addWidget(exit); diff --git a/pages/passwordmgmtlogin.cpp b/pages/passwordmgmtlogin.cpp index e29c8b0..ddaa1a9 100644 --- a/pages/passwordmgmtlogin.cpp +++ b/pages/passwordmgmtlogin.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include "global.h" PasswordMgmtLoginPage::PasswordMgmtLoginPage(AppContext* ctx, QWidget* parent) @@ -18,14 +17,14 @@ PasswordMgmtLoginPage::PasswordMgmtLoginPage(AppContext* ctx, QWidget* parent) QWidget* col = new QWidget(this); col->setFixedWidth(700); QVBoxLayout* lay = new QVBoxLayout(col); - lay->setSpacing(24); + lay->setSpacing(50); lay->setAlignment(Qt::AlignHCenter); - QLabel* title = label("密码管理登录界面", 28, C::TEXT, true, col); + QLabel* title = label("密码管理登录界面", 60, C::TEXT, true, col); title->setAlignment(Qt::AlignCenter); lay->addWidget(title); - QLabel* sub = label("请输入管理员密码", 18, C::TEXT_SUB, false, col); + QLabel* sub = label("请输入管理员密码", 40, C::TEXT_SUB, false, col); sub->setAlignment(Qt::AlignCenter); lay->addWidget(sub); @@ -33,23 +32,29 @@ PasswordMgmtLoginPage::PasswordMgmtLoginPage(AppContext* ctx, QWidget* parent) m_input->setReadOnly(true); m_input->setEchoMode(QLineEdit::Password); m_input->setAlignment(Qt::AlignCenter); - m_input->setFixedSize(400, 88); + m_input->setFixedSize(400, 90); + m_input->setStyleSheet("font-size:60px;"); m_input->setFocusPolicy(Qt::StrongFocus); m_input->installEventFilter(this); lay->addWidget(m_input, 0, Qt::AlignHCenter); - m_error = label("管理员密码错误", 18, C::DANGER, true, col); + // 错误提示(预留固定高度,出现/消失不影响下方按钮位置) + m_error = new QLabel(col); m_error->setAlignment(Qt::AlignCenter); - m_error->hide(); + m_error->setFixedHeight(56); + m_error->setStyleSheet("color:#E5484D;font-size:40px;font-weight:700;"); lay->addWidget(m_error); QHBoxLayout* btnRow = new QHBoxLayout(); + btnRow->setSpacing(80); btnRow->addStretch(1); QPushButton* ok = button("确认", "", col); - ok->setFixedSize(180, 72); + ok->setFixedSize(160, 140); + ok->setStyleSheet("font-size:60px;"); connect(ok, &QPushButton::clicked, this, &PasswordMgmtLoginPage::onConfirm); QPushButton* cancel = button("取消", "", col); - cancel->setFixedSize(180, 72); + cancel->setFixedSize(160, 140); + cancel->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 connect(cancel, &QPushButton::clicked, this, &PasswordMgmtLoginPage::onCancel); btnRow->addWidget(ok); btnRow->addWidget(cancel); @@ -86,7 +91,7 @@ void PasswordMgmtLoginPage::onInputClicked() if (dlg.exec() == QDialog::Accepted) { m_value = dlg.value(); m_input->setText(m_value); - m_error->hide(); + m_error->setText(""); } } @@ -96,8 +101,9 @@ void PasswordMgmtLoginPage::onConfirm() clearInput(); emit navigate(PageMgmt); } else { - m_error->show(); - QTimer::singleShot(3000, this, [this]() { m_error->hide(); }); + m_value.clear(); // 输错后清空输入框 + m_input->setText(m_value); + m_error->setText("管理员密码错误"); } } @@ -111,5 +117,5 @@ void PasswordMgmtLoginPage::clearInput() { m_value.clear(); m_input->setText(m_value); - m_error->hide(); + m_error->setText(""); } diff --git a/pages/passwordreset.cpp b/pages/passwordreset.cpp index a421f65..e6f9656 100644 --- a/pages/passwordreset.cpp +++ b/pages/passwordreset.cpp @@ -19,10 +19,10 @@ PasswordResetPage::PasswordResetPage(AppContext* ctx, QWidget* parent) QWidget* col = new QWidget(this); col->setFixedWidth(700); QVBoxLayout* lay = new QVBoxLayout(col); - lay->setSpacing(24); + lay->setSpacing(50); lay->setAlignment(Qt::AlignHCenter); - QLabel* title = label("重置密码界面", 28, C::TEXT, true, col); + QLabel* title = label("重置密码界面", 60, C::TEXT, true, col); title->setAlignment(Qt::AlignCenter); lay->addWidget(title); @@ -30,26 +30,31 @@ PasswordResetPage::PasswordResetPage(AppContext* ctx, QWidget* parent) m_input->setReadOnly(true); m_input->setEchoMode(QLineEdit::Password); m_input->setAlignment(Qt::AlignCenter); - m_input->setFixedSize(400, 88); + m_input->setFixedSize(400, 90); + m_input->setStyleSheet("font-size:60px;"); m_input->setFocusPolicy(Qt::StrongFocus); m_input->installEventFilter(this); lay->addWidget(m_input, 0, Qt::AlignHCenter); - m_hint = label("请输入 4 位有效密码", 18, C::TEXT_SUB, false, col); + m_hint = label("请输入 4 位有效密码", 50, C::TEXT_SUB, false, col); m_hint->setAlignment(Qt::AlignCenter); lay->addWidget(m_hint); QHBoxLayout* btnRow = new QHBoxLayout(); + btnRow->setSpacing(80); btnRow->addStretch(1); QPushButton* ok = button("确认", "", col); - ok->setFixedSize(160, 72); + ok->setFixedSize(160, 140); + ok->setStyleSheet("font-size:60px;"); connect(ok, &QPushButton::clicked, this, &PasswordResetPage::onConfirm); QPushButton* cancel = button("取消", "", col); - cancel->setFixedSize(160, 72); - connect(cancel, &QPushButton::clicked, this, &PasswordResetPage::onCancel); + cancel->setFixedSize(160, 140); + cancel->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 + connect(cancel, &QPushButton::clicked, this, &PasswordResetPage::onBack); QPushButton* exit = button("退出", "", col); - exit->setFixedSize(160, 72); - connect(exit, &QPushButton::clicked, this, &PasswordResetPage::onCancel); + exit->setFixedSize(160, 140); + exit->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 + connect(exit, &QPushButton::clicked, this, &PasswordResetPage::onExit); btnRow->addWidget(ok); btnRow->addWidget(cancel); btnRow->addWidget(exit); @@ -87,7 +92,7 @@ void PasswordResetPage::onInputClicked() m_value = dlg.value(); m_input->setText(m_value); m_hint->setText("请输入 4 位有效密码"); - m_hint->setStyleSheet(QString("color:%1;font-size:20px;").arg(C::TEXT_SUB)); + m_hint->setStyleSheet(QString("color:%1;font-size:60px;").arg(C::TEXT_SUB)); } } @@ -96,20 +101,28 @@ void PasswordResetPage::onConfirm() // 校验:4 位数字 static const QRegularExpression re("^\\d{4}$"); if (!re.match(m_value).hasMatch()) { + m_value.clear(); // 校验失败后清空输入框 + m_input->setText(m_value); m_hint->setText("密码须为 4 位数字"); - m_hint->setStyleSheet(QString("color:%1;font-size:20px;font-weight:700;").arg(C::DANGER)); + m_hint->setStyleSheet(QString("color:%1;font-size:60px;font-weight:700;").arg(C::DANGER)); return; } ctx()->setPassword(m_value); clearInput(); - ConfirmDialog::toast(this, "修改成功"); - emit navigate(PageBoot); + ConfirmDialog::toast(this, "修改成功"); // 2s 后自动消失 + emit navigate(PageBoot); // 修改完成,返回开机密码界面 } -void PasswordResetPage::onCancel() +void PasswordResetPage::onBack() { clearInput(); - emit navigate(PageBoot); + emit navigate(PageMgmt); // 取消:返回上一界面(密码管理界面) +} + +void PasswordResetPage::onExit() +{ + clearInput(); + emit navigate(PageBoot); // 退出:返回开机密码界面 } void PasswordResetPage::clearInput() @@ -117,5 +130,5 @@ void PasswordResetPage::clearInput() m_value.clear(); m_input->setText(m_value); m_hint->setText("请输入 4 位有效密码"); - m_hint->setStyleSheet(QString("color:%1;font-size:20px;").arg(C::TEXT_SUB)); + m_hint->setStyleSheet(QString("color:%1;font-size:60px;").arg(C::TEXT_SUB)); } diff --git a/pages/passwordreset.h b/pages/passwordreset.h index 27c0260..6f16be6 100644 --- a/pages/passwordreset.h +++ b/pages/passwordreset.h @@ -21,7 +21,8 @@ protected: private slots: void onInputClicked(); void onConfirm(); - void onCancel(); + void onBack(); // 取消:返回上一界面(密码管理界面) + void onExit(); // 退出:返回开机密码界面 private: QLineEdit* m_input = nullptr; diff --git a/widgets/confirmdialog.cpp b/widgets/confirmdialog.cpp index 4b15a99..5613889 100644 --- a/widgets/confirmdialog.cpp +++ b/widgets/confirmdialog.cpp @@ -45,6 +45,7 @@ ConfirmDialog::ConfirmDialog(QWidget* parent) connect(ok, &QPushButton::clicked, this, &ConfirmDialog::accept); QPushButton* cancel = new QPushButton("取消", panel); cancel->setFixedSize(160, 72); + cancel->setStyleSheet(cancelButtonStyle(40)); // 选中时红底白字 connect(cancel, &QPushButton::clicked, this, &ConfirmDialog::reject); btnLay->addWidget(ok); btnLay->addWidget(cancel); @@ -81,7 +82,7 @@ void ConfirmDialog::toast(QWidget* parent, const QString& text, int ms) QLabel* lbl = new QLabel(text, d); lbl->setAlignment(Qt::AlignCenter); lbl->setStyleSheet(QString( - "background-color:%1;color:%2;font-size:28px;font-weight:700;border:2px solid %3;border-radius:16px;padding:32px 48px;") + "background-color:%1;color:%2;font-size:50px;font-weight:700;border:2px solid %3;border-radius:16px;padding:56px 88px;") .arg(C::PANEL, C::SUCCESS, C::BORDER)); lbl->adjustSize(); diff --git a/widgets/numpaddialog.cpp b/widgets/numpaddialog.cpp index d4ab613..0c82b3a 100644 --- a/widgets/numpaddialog.cpp +++ b/widgets/numpaddialog.cpp @@ -26,8 +26,7 @@ NumPadDialog::NumPadDialog(QWidget* parent) "QWidget#NumPadPanel{background-color:%1;border:4px solid %2;border-radius:16px;}" "QPushButton[numpad=\"true\"]{background-color:#2D3947;color:#E6EDF3;border:1px solid #3D4A59;border-radius:12px;font-size:40px;}" "QPushButton[numpad=\"true\"]:pressed{background-color:#2E7BE6;color:#FFFFFF;}" - "QPushButton[numpad=\"true\"]:focus{background-color:#3D8BFD;color:#FFFFFF;border:2px solid #8ABFFF;}" - "QPushButton[numpad=\"true\"][cancel=\"true\"]:focus{background-color:#E5484D;color:#FFFFFF;border:2px solid #FFA6A9;}") + "QPushButton[numpad=\"true\"]:focus{background-color:#3D8BFD;color:#FFFFFF;border:2px solid #8ABFFF;}") .arg(C::PANEL, C::BORDER)); QVBoxLayout* panelLay = new QVBoxLayout(panel); @@ -89,8 +88,7 @@ NumPadDialog::NumPadDialog(QWidget* parent) QPushButton* bCancel = new QPushButton("取消", panel); bCancel->setProperty("numpad", true); - bCancel->setProperty("cancel", true); // 取消语义:选中时红底白字 - bCancel->setStyleSheet("font-size:60px;"); + bCancel->setStyleSheet(cancelButtonStyle(60)); // 选中时红底白字 bCancel->setFixedSize(160, 140); connect(bCancel, &QPushButton::clicked, this, &NumPadDialog::reject);