From 0dcaa994c8b63f0df6a4170bc03eaf5f050c5bc7 Mon Sep 17 00:00:00 2001 From: sunwen Date: Mon, 27 May 2024 11:27:02 +0800 Subject: [PATCH] feat: Add button can see the password in login dialog. --- src/icons/eye.png | Bin 0 -> 5477 bytes src/stylesheet/Dark2.css | 11 +++++++++++ src/windows/LoginDialog.cpp | 27 +++++++++++++++++++++++++-- src/windows/LoginDialog.h | 1 + 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/icons/eye.png diff --git a/src/icons/eye.png b/src/icons/eye.png new file mode 100644 index 0000000000000000000000000000000000000000..9a13c1b76406d1613133543444ff38873682746f GIT binary patch literal 5477 zcmdT|`9G9z+rDMOpv)M`nlZ*+ma;1hW8Wf6#-2Spg(5UbgR%^=g}#%etdTW4V~NmM z1_?0=+4Ut$^xoh1`8@CE{S%(&hx@*Mxz6Kr-RE`Q$8nxV+;tP(Gt4~9005lP*Tb5F zYu`T)69f1zzgdw7E_A`>x|%@65Z?*_a0=*SF&1GC>-J}!@{iwD^9ae9^g2k<5F|f@ zu*Tttq?nr;Ji;(h^AWBunq?aJk%CK7osp`c)Cyx>?M2hERVn|CHJ${&QM4GHY89(+ zB7t4g0G4>`B7!)gV7w34R^W1mGFQ!vZ@g%w4e7XV-*?~0$qLZ;>Zdee-2C|VKo|_)w*`a5ATKjO=&nE(nQz7Bc;3TD z!^o*v!%TN3Cd|hG#3fU3TNu$3I?75XNZ|G(eS?DWrtFuTvjve5*)HRns~8QY1$~mR z(G?KNy&>+oC>VKFzb3{j7KCC|r0hVzNYS|GGJ_yg=DY|l4~c|qqbck~+#uAIFW3PD z7@3F0b;@aJF#U%d!gc~DX;sE`v&NIc3w*tUQsIXu{m$i{HN_4KEkpv7ZK0d9OZC3f z3Zr+6Z@rW|rI|dE%xQhyz#dOHkD%CQLX4tc5dv_5hPr4+r)rtN{hSY4SX26TEq&se zl$Rly1%-r⋙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 DP-z=t literal 0 HcmV?d00001 diff --git a/src/stylesheet/Dark2.css b/src/stylesheet/Dark2.css index 900719c..2bcaa9a 100644 --- a/src/stylesheet/Dark2.css +++ b/src/stylesheet/Dark2.css @@ -332,10 +332,21 @@ QDialog#loginForm QLineEdit { font-size: 26px; } +QDialog#loginForm QWidget#LoginEditArea { + background: transparent; + min-height: 110px; + max-height: 110px; +} + QDialog#loginForm QLineEdit:enabled { background-color: #515151 } +QDialog#loginForm QToolButton#ShowPasswordButton{ + qproperty-icon:url(":/icons/eye.png"); + qproperty-iconSize:30px 30px; +} + QDialog#loginForm QToolButton#btnlogin { min-height: 100px; max-height: 100px; diff --git a/src/windows/LoginDialog.cpp b/src/windows/LoginDialog.cpp index 98b35aa..7df5bc1 100644 --- a/src/windows/LoginDialog.cpp +++ b/src/windows/LoginDialog.cpp @@ -34,6 +34,7 @@ LoginDialog::LoginDialog(QWidget* aParent) , mAccountEdit(new ULineEdit(mDialogFrame)) , mPasswordEdit(new ULineEdit(mDialogFrame)) , mLoginButton(nullptr) + , mShowPasswordButton(new QToolButton(this)) , mErrorMessage(new QLabel(this)) , mIsRunning(false) , mHideClickCount(0) @@ -122,15 +123,37 @@ void LoginDialog::initializeDialogFrame() void LoginDialog::initializeEdit() { + QWidget* accountEditArea = new QWidget(); + accountEditArea->setObjectName("LoginEditArea"); + QHBoxLayout* accountEditAreaLayout = new QHBoxLayout(accountEditArea); mAccountEdit->setObjectName("combobox_UserName"); mAccountEdit->setPlaceholderText(tr("Username")); mAccountEdit->setFocusPolicy(Qt::ClickFocus); - mDialogContentsLayout->addWidget(mAccountEdit); + accountEditAreaLayout->addWidget(mAccountEdit); + accountEditAreaLayout->addItem(new QSpacerItem(49,20,QSizePolicy::Fixed)); + mDialogContentsLayout->addWidget(accountEditArea); + + QWidget* passwordEditArea = new QWidget(this); + passwordEditArea->setObjectName("LoginEditArea"); + QHBoxLayout* passwordEditAreaLayout = new QHBoxLayout(passwordEditArea); mPasswordEdit->setObjectName("edt_Password"); mPasswordEdit->setEchoMode(QLineEdit::Password); mPasswordEdit->setPlaceholderText(tr("Password")); mPasswordEdit->setFocusPolicy(Qt::ClickFocus); - mDialogContentsLayout->addWidget(mPasswordEdit); + passwordEditAreaLayout->addWidget(mPasswordEdit); + passwordEditAreaLayout->addWidget(mShowPasswordButton); + mShowPasswordButton->setObjectName("ShowPasswordButton"); + mDialogContentsLayout->addWidget(passwordEditArea); + + connect(mShowPasswordButton, &QToolButton::pressed, [this]() + { + mPasswordEdit->setEchoMode(QLineEdit::Normal); + }); + + connect(mShowPasswordButton, &QToolButton::released, [this]() + { + mPasswordEdit->setEchoMode(QLineEdit::Password); + }); } void LoginDialog::initializeLoginButton() diff --git a/src/windows/LoginDialog.h b/src/windows/LoginDialog.h index 4b0dc90..4baebc7 100644 --- a/src/windows/LoginDialog.h +++ b/src/windows/LoginDialog.h @@ -54,6 +54,7 @@ private: ULineEdit* mAccountEdit; ULineEdit* mPasswordEdit; QToolButton* mLoginButton; + QToolButton* mShowPasswordButton; QLabel* mErrorMessage; bool mIsRunning; int mHideClickCount;