From 0baf228c6768012602a8cdb149bf04946c06ea8f Mon Sep 17 00:00:00 2001 From: xu <1012118331@qq.com> Date: Thu, 10 Sep 2026 10:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=AE=8C=E5=BC=80=E6=9C=BA=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=92=8C=E5=AF=86=E7=A0=81=E7=AE=A1=E7=90=86=E7=95=8C?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/global.cpp | 14 ++-- app/global.h | 3 + .../bootpassword.cpp.2880E253A763ABEF.idx | Bin 5304 -> 5386 bytes .../index/bootpassword.h.5F19AAB843B33CCE.idx | Bin 2192 -> 1872 bytes .../confirmdialog.cpp.A07B26C68894B406.idx | Bin 3976 -> 4012 bytes .../index/global.cpp.3110D8C4024B8807.idx | Bin 2524 -> 2818 bytes .../index/global.h.04FEB1AA1BE5CBA9.idx | Bin 7862 -> 8058 bytes .../numpaddialog.cpp.4EC97A520E700E9E.idx | Bin 4750 -> 5228 bytes .../passwordmgmt.cpp.33B9EE5515D021E5.idx | Bin 2568 -> 2648 bytes ...passwordmgmtlogin.cpp.AF231AAA0CBB48FC.idx | Bin 4196 -> 4558 bytes .../passwordreset.cpp.1B25930C84FBC9DF.idx | Bin 4716 -> 5098 bytes pages/bootpassword.cpp | 67 +++++------------- pages/bootpassword.h | 4 +- pages/passwordmgmt.cpp | 15 ++-- pages/passwordmgmtlogin.cpp | 32 +++++---- pages/passwordreset.cpp | 45 +++++++----- pages/passwordreset.h | 3 +- widgets/confirmdialog.cpp | 3 +- widgets/numpaddialog.cpp | 6 +- 19 files changed, 95 insertions(+), 97 deletions(-) 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 232c8d74b886bc34d6258c631d8d3fd7724f53cf..4441e0883e15847c77141cb5ff72ed6c70393185 100644 GIT binary patch literal 5386 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 literal 5304 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�J_R!28T8XQHpZre4J@(!Y z^%H&fZ2gGkke=6*al#><=gDQ5Lq^`1fVab;6hlhV6tZ$wGBY@o6PqK7Z%#rE8NeLM zGv<*yE1<+Ya`tkl$XFzjEJ`mTM>&VuV%ySjLEPeAJYlbgl?3Vi%F?p@8z)d=XkIT`H0+la-P7kvx#F?8~9oK7pJRv&CcyzU9Eo zv@N!k;vn&pAHO*2&Gg{e(H*`q=(3906*inv=Cbekw0RSk;fhnNEhfc|*>KK5&GZ@G&=*Wp_jEmW>5~tQiUxP7-=d{`;bN%A3yQ&O@tN|A?pny+@ax&2vgerjmp$mIO-rx%az z`sss{i!VICG?wMAX5NgviA1VPP?Wxe9O@FbiT@FJJm{WIDK55!q!bE9MM3t(lj#%^ zd&PLFU5che8HJ^&=;3+3!^0Dt?MhMzioCEf5D_Fr;#|hOxfoOJ8qgaVhv)8LJKapWSiB zunRx>2#Z-z*Dy6!Q16~^f95?l9A_~DYL;QIc)KzeejUF4<=qa9L2Wjh*Ms-($;rD$ zW>-cn*i?dO&cxZY3)G)j?`Zm{bLOxCt7KFUU8*m&B1U_Y-0iCpcmKhM##n3xcn9OC z0)H1CJ~ia6ecOVK1m01vXMH=TEx3%R>rM4G?E>|RyZN2f&Hdl7xE#Ri zm^wSCr=y*-(=*-$7Mnp`%~Y3zTK84(05{%ok;QsY+ZbCVsL3pqeMDiD<5O*~EFr3# zHtLKfn3l^j;%j{4^Abv@iNDOvwT{dF#Eq_&zbckEcagR9zVq01fA+X36K!^y8=&dH z45~(B1Yke4zV~a%@*Q9$WH}PqDu;Es!QWJY#U7YV)jtoLXT$blt0fl5qH~`A(Cpw&epYm^^%4mwF z)VJR zX#i{BG67LJ3}R?Lrq*PVpA3|m*)#P0_z$c?Ak{fS6(=_>SooRI-ohMv_O^}eIUD^2 zyo!p0!I1?1-J#r*`xbhnZ}+O><;@$x3YLd7PTd?x7nX*MS6h}VO?T>?X4r@yk1wx2 z_}XWOiv|Y!L=sT<2p~^bS8xB~!*f}ZfbCk_2B0>8kp$G;0_*L37+kpxh;69T|uk}TDQ1Ticm5vz*`V(57h2OtKq zR`(LDWicvTLt6Ip%FgpshOIOOcEA|~mWmuys?_Gv`)jk4ne@aF%7DoKC!Bu(C1D}U literal 2192 zcmcIkdu$YC5dU_$_PX19Y|Tf1%AdN)eYZFB zo8Qbg^P9V`vZA6pg^=>b%5`B;7c7L34ESieDm_BOi}94)=;6nA4)C#&j`)j1v7=ii z`k(soz2S*HJ(GO{{EgrxWQ8m%x}ZynT+FxV4O&RiSyHAbdX1oI?TXr1BditwWhgEt z_f|==xUx~wNgyN&YNZ@$)rr_9%6f$q(nXa7rI1+c_xo2B`+=ufiwFVHFDz?l5+qIX zn`cqcipbJJe~a#KZ*3Cf>2tNzkoXya)S7>dpovSG{yRFjTV(ofO9GL||3eJ*DuGrl z(Uow6sH%!e!VQwyrEo(?2{en1U}zIUts;E4tBSm~TxpecqR8cf91ugsiy{XlH4JYR zin>-bd?sUgNHXJ9F{p}KQzFa6=D}FkaAN8|jqQqc?vKB+g&*G%1wDXgD8A=d?C|rG zyN^t~(0gg5JHGWmy!+7PNPoP)D-n8WmJbPHjcJZ>?$Skl?H8_m zSj!p$YFXib40LO6G0R_?XzjWU6YPXx70{}Li z&13C$`+SW5Ei!cXw$m4PIA|y2=WV>pJkb52b9vGGRVVgZ>7+!xgiT6LauUY;1=q`* zlK2OAKi0?589-m>sk@nVGj5L&Z}hK#?mXF1Ht(>5wgbJ_>2;e2(%)9yKQ>UgY0N>} zz@2N$b(sgcFZxQ3Ox3RYilZ}uypQtqQ484|CMOdCW1*_kV<*bu9GwP$F3QsdEBj`!eAf3)~08*BI4^Re-$Fe=+r7IHs5 zf8MVJIVHE!44a&sY@6;bv9Y<9To(I+@`G4IbQrt7?4H-%jV~8Mrp%N~JI3;LyE|+9 zt`$-Aj9c`M9{;FyWB%<_hG{N7FcGV{(6kZBXf~nPX%;9R7dAJM3PATd;rW*ikw%_uN2N9;g!YsYu{zUMTcG^UQ18(tB2_)qL;o1S{h z_LbYVo(cVoQM2xhV}=6$*|^co&&6A$Z?+p^@Y|Om3fB!2?2wJ+Eqp2#z2>dxo2SqBj!uJcP>>+gm4gXTx{$!wXH0;r3{@HnjAmS5FdJ)& zX6*Sa4PXvH8(WNMRSXGv(6UPxH=P@?)~8U2L(LFGYHC397|msC?us2+Dq4e73jUWE G=Dz{^cBNJT 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 4b36d3d523c60f6f58679075e8ec3d82b071bdee..d62b8e79fd7c773ef725025b8eef128cf1ad8a5c 100644 GIT binary patch delta 1293 zcmYjRZ)h837*F%w^>R<%YZtu)U@fE=CZ44N*ZPA7eDxC z6k+HJ3R6L+?r{hzf+z^XDrM-t4F54vw^5OSj)|iCAPjULricilui~5Zz8t@M{{5cc z^W5`P>g|;1%+1cexg~z&C6;30=U#2Otdx`fcqkt8_&onTpKhn0JM;Uu>me`odcaof zet$>~g}C{vYtKIO<@NNXh?g*PK`He6qoHVmn>`QTd*2}s#XRXBbVF|J@hjIHA%AQ% z)_?wuUd%~78jPqTdzB~GF5I>G?f~9R?BQj3Im-RSgF)xEl}y4*!PL!t+>b&t-Nes` z9?ojnA^uf^hStD8iLOpZremC0a`WuhC$@i1vr;YE!mOZ^1!)0S1!LGzott^3UAKy- z6I+kzUKN-Y+FP%mKm6c}p_&FWz8O5lf(*gHOM(%u2{qtB6l(DrCPiH}bYlMaJc1#u zF~kvP#WebN5xN=`eZ?TBHFWl+$%_}49`$Nq<*g~+mjTz8f-=g!^u#}PJ_ zw$#R=PcN2|r8G}MVP2T`^STVh=Cv+rrCPf=y1G7v7wiK^dni=KD|pgpl8RcvpM3h{ z7#)lACN;=GPU)gNaVX2GCnR1S6K%t(f4{-F|H-~Qejik@80hEHJC=bzKO_zr4+cIxdgnU$m*(8GC{^#F?=Ff*lHcXxH&@HCF9(!L~C|M^s2pV%u2vgaSs6R1@H delta 1267 zcmYjRU1%It6yEHe$?TlH+1=USWHKb{)HbPNXErg->~<#Owo8}YWaI8Ial2ug2tiTw zL0SSLYD7U>&}uza9~8kSK`j!b_Q9e)R48dl(SU!|f<=@lGi2cySEMXz@7;4|yu=V4-}ZM+cH?yIJ&L(yy^n+Zii|2$6IP^C+{?Hmv}a}{*)e8fr-}Medpp6 zkG+;?X|O-CA2(Q%AsG0ZU@A?a2|S5HGuuQ{)Kx<_c5@y)+NT2Z4IdSC(im&tNpXeP z1sneq7iz|Y;quQZ*rJ`}{V6!2ljQbNa78!CrBEmfWhFpWv5KeqP12HEc%lDzUq5Dz$rTS{9hry>NN`+8@K)SG@HYcw1f{w^h#x@lIKMz)P!1;_hl$k z(*o2T?e5~}`f3?3&G^svQK;Wt$IFo-sjGF2%KE+uI+5ifHJFC!bbyLb+=dRpp=~BD z!XiE-&nT|u?g$7~)heEqb+Q-s;tz6>7-a(ofvwNrEIM!}@ns($VYoZq#aGz7zNe07 zz*N~z^r&0@Tg%o@#rGK5ieACLVPVbQVc)?$V$;^0-P~n1?Mb&35O8a5GeFfs)#4sd z@N(V=M?ZdZ^!DFL{u~=XC0y=7n7jCEv^r{ySb1(y z8d}-bAg`H*j@H2jEs{p6fye10F){}JLUnacn(J-L+KG=(ew6)wlMQuJojBtIB+4zNdn1XU@Z7Oeg*>AD3cg#iVA2^UE3u!C%}LRS*e?lk=pTr( BpD6$U 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 56171605d0e248bd38fa1b127acb4df2744397c1..4f0b5bbd89f9a04cea5baba34fcc6eb0210ce5ca 100644 GIT binary patch literal 2818 zcmb_ce{2)i9e*z|xr=>yz9i?!@j3P-BoN%fC9DBzghoRfN?U0SE<@dhsN~^r{eIr}`+eUZZ|jz(rUz;OHnncq)8P!-RR91E{{un4>t-HaEIhT{|h9@lO^!EI7QLKu~bB+x>#Y=lA-A4MJ6m+vV9^g^4atP}t@51fSi5 z#cS$TfDPaE2vX#2=}<&EoJ^m1SNJZ*2DNnj9qHv!p`os>BOuJ5{8i@Q{`-kD>30Ud z6-oVv(?>_I=q+<4W>^Wlj0XL zuZ?BNcQ5uy{io-W!&b2dyIgLkRTRZ0tJwUU*s!X;VbyA}1H0&1SHJUn zt3{W`;qGd6ip{~rTn9vK9sA2|+-wzly#Cz*pWWdU?Q3?n+g$;dn0>Ea{g|)5PV5Yd zJzec~&$sVwuAPezhc33cy)Ab4Du>Va|25c-yT$GgHZIf~FTK9SRkzpG3Zz4$(pV^) z-t_s1lo-7G)+iQE%%8lxSU>5?ne@r9bb3^Zg{5B}ol72FtQMFLg`~rAQ5t+b9qv!R zGB7`MWqzdZ?v>P{9bEUjBfp*x4a`L^o#)OshN}YBuy;ldy^YTiwF8t12fh`mO-(0^j9#tQLkU?R{hoL}rKJm(9pXr*?;O#%3pK1Iwy#|Xll%|A;@AOUHd-mhCPhl5G zgUX25h)Su_9Lb1Gl&OS-yBrl*2hETF5L>boS{M>lFY4C5^t8!=%Nc`w44O$mzdxbA ztv}HCVxAEdYl@3y7nM|H5ixr1tn>RFFWzwHG00-HR1u>LNtRjj}-ncUB?AO196;qI(g1Pkk=K0QJ*FSr?7e`xER%DvpENWH#yZ-VcbKvr; zC1pQb5Z4qvM8x1=-zTZhheFs)9P)9vl-N)Fqgj8UYjeNKh_o6lD<6W@unJ_R%nUh_ z5ebx#Lqk8#d_+CAX#hJcF=rwV#Y){siPFU=88z+4sdy zuQxW07cz*dr9=`PgVZ{;QAUPZgGhp6P&KHgJm4q{B)a zfpkQPqmYg&aSYNiC5}TnuEf)jo>t-nq!UVcy<=9-k zaj&pKuHM(i^vC~Z-+ButVG{C_a=mYU-S+QOYmeM6HvU(c@T4osWJJm`{qL(|0 zRN@q5Q!=jG@jlP(F1myB6oq_Lz9!CXN5lX8!PqQTBp{!V=i=u5BTsJQTkqlYQ#vYl z{o|DB47m$`&A`{Q?u*m^!lTL*F}WM`p;5|TmA>>97F%={J?Z@LvYE2qZv6XK*rb-z z=7z(av^AbKGgTv_LRFz!ffV-y9*1(qEb9zrLk%$w m{7$!hVZ;M|M_?)bLc~4X_-N0cHtfsO76C1pegKN(<$nON{;I|R literal 2524 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 CVk}qy literal 7862 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 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 209d1af16704192c4da66137e1a901468343b05e..dcc1b2c301321e9263a4390d11cd3d855b8fb3ef 100644 GIT binary patch literal 5228 zcmc&&e^Ap$7SG~>B)j=Vz6l|GLj-{Up~N6ypde^~R76z7s5C7N1VSo-Kmg-OtwoBh z6|2Rbf^*k)>{ah-JJtR;d!DWJ=v3RDUfb*0R_$HAYn^s(ZmzYxYMs&BSa!dAbN@MW zbNM5)pSN%Ky?yWV-fq&ksJ7NG$Yd`6qG+hS-v?zf8G*7$e_!xq92vwu4FjQNK7V!4 z*VPmF4^UPnYwK$F^~pMdUF~IdyS=u|zP!m^T;M1!D71%y-GOyZN6Xwod$7B$Yrx-b zU*5ke=nu5_N9@bpeL;V{Z+*`||E;XPV_{G9)>qg2THCvB#cX}ByS>IAyd{^H4MaK@ z4)pi;bl-|)&wn4-U1nd`)3-Jf_O-R!eI+fOzF;J1zxiEQxFGD9WAE*^uN&y}bx(h< z47U6Tec`Y@(ACrG>niAE&fNNT>!x$sJrD}}{QjFfDQF9a|5sag%6hsN`r3XxIT^cd za1*%kYmao+v~~8#BJKSiU)MmpEV4e-`Wd0}1x@<137=14O`JAPh6Z(m zsaPY|Xl02vi7q?)b@#|e`mgdeaY{1173j8tG;EL?1gbE%cir;P4M&qEZU#{p(hV7L zk~~R8rwitk7O(%seHq~S`Bf4D9BZE6ILpfDRlbO zg^?S7FFtrc6Q?HA!$3Do*6ZbZw*I#*-|XM)HlNnSX^6sZpxaFxG|5fO!PxO5L|=A& z>dnJP6b}M`ky&HbQ^WeyclITWJ7)qBHK#V`GjZMB_ZYqN<%uFnM#;%kETSBoW0cT5 z^}JLGRVG#n5~@YD+`1)r3Ab*gd?oWhM0YChOrh&&LV)RJHqJJm`0~Bp-p##hRi|3v zKb6GIIf^;V%7w62e{Rcw4q=oDGZl0bjIv-Bhq7Tdhpf=bp&XdQpVCthx;%`6|Fj4W#mycUt2t00uB634FqGAy>zy=O^poc?V=w*nO zDe=i&>8_(2n5HY1lBgxQ^f$J1&)-JO=ixkN-aXmcf3W7zoCFa$vz)91L{ybl#R5cj zPIt3|5Z5vqSYSouv3OYUMC6_A&7(fNleXgB4+1+JKtRq)XAKqaId=Huz=oV6xquwA z9c(Q@RtH;4kj=puL6E~yL^mL)*x}?*siT}jm5zlRaye=_3kM@}F4GG+hOW)dKMihdSV8?GOm+Vbd$79ySi zcmn8X`=AQMTI@!k+bsU;H^~>j|Ew(zqZZhrrdkANf+n<83mSbEaTGC65+38g2m&TL5*H15*B!@~@ zrE?Lz2i?P>eP-Jqt5)`&e}dSxVk=WB{}3%Hj6e7!5sv}Q7!W8=?t8!JOz`KM_Q^4d z!YGo+wh?Yb64^#T;s{VnWE%x=6d(z21M+P^LpR05Na7e!OL!c>aeyQ;P5@y7q*5}* zo;_)kAdBKzo!i2)KQul~y!BLgTr>c$hwOj5{<-1+xfrkwvxL2uzTkoIg`XTC+S`D3 z8!%F{)V&$xeqQEWMYkdM^SmlnfTro!F|FihqKBS=DCHp8%`7*wik4qiUVGHN>JSP3 zM!b=gp@_x-9+%22df&H0QwwVklRjfiF*4#|pi~dRl)^3v~%rhKb7ETMZ6Nswko_koAbdng;@)?D>RIpMkh0eQ8_HR<{_rpo`Pw3zW24 z!EK?L#;6X~ahiPbV$`5-V8_F#5jJv~d|_kcN%EMbJy*lkoF-rN7pQ+sGy25iIRM#h$1k;b`sHgxL!>ID5Cq}{c2i&BH9Ar7ODP3v>m|hQhkYN7l6Bf zn%0+T`Uf55^!?jk+4-X3lhcH}9jXqN4iN=aL59v;3tZhZ?~!vx0VO3RmC*AF$dF>- znjBAS0p*%<*;|LaEdP%$QUR5iOSm_0d3HH#)B>7sn9tsq0;;O4;$FF~To-G^0;)-= zVNF~>b$NB%p7o}B?zD~8Mh-P4H?eC%K&x%5?KFaO?s_{_SgSlwdcN6YW|X@j9C)E{ zX7YLR4FdP5? literal 4750 zcmc&&Yj9J?71kBkU};zHD_NGWWh6hq7WK6ZvV|WAWLplxsx6)&F$mcfvc{GySr*2% zofw-KyW|0RG!&*yGD$FPNDDMcVW`T2e#+~9Ai z4*Aq3!0O-pE2CO0JFt_l>rS-#BM-jUg?#s+ zKN{tN?Hx`2_QF5Kgek$5svy>T4s1s*c^@iuT-~+IwDSg^L@|JxN3%j9g*r# z5T&Lwu(dM~Z>?!=?GVKSUF-eriGV2H6Kv0vS*#QL03# zGej3%`69COW9_X)O0f)0_h@>IP$$tbczSWH+Z(=TU8@w&LDOxTHa%2J)N(vsShUpE zbF~Uh%hB`zr5T_MFin!C#0z%+wPc{8_g_sqF@+XLY z&~!`_GeE6GOLqUp_vP47ZRUBUSc#^GDa|ltga(O$n3r@tUM?4jrYGJ%c3k=dML}Rt z8npOWt$Xtped998JQk#Zv@|ScL6M>;gGZ&Qr3{ajfn|b~HLym{&(%rlh;kM*$Qsh| z9F8+(mfpV?Q4x7`76rONv5 zuwoXl^H~cPv!Ib}T!7KiIKGZlbySG&Kd>u}A{qPZ-v=2{owMJ%uz z?ZgeFz~mr?Aq&hd;yw#JSsvmd3%uFh0<7hC#x=jc6x?H_7+`f+Yp{6V__4Ez-i1pf z46tNd$X>^KCTVuCn)hy89kwB{Dn~`Ue(6Nq*1K*zDb@iUDVLRxel_{Be@+z==d<~QLYc$8 zd41hmUC8qw49alfOzwQ^R>Q?ocM1zQ1!ur^v7jWiM8l&BP@&^d6|5r0v0#;C6{#?L z)}P&bUl?(tTTUxpcVz)kRiJge&Rv2%+AiX zV0&=4L_HwcDlw06mqcW9EqB%8)rJQR6E8b{{`k%Gu{)2TaB0)E^YOC5x@{A?o;l+~ z;t>jtP#Rp;cmX;s*;uifq1!*Yw7cS33py>Xj5D~!vZx8HW))a3LV{KUK_lHLm=iW0>>h+bB9cH}fzWpd99BmqKj$iTE#r}g^OW<* zyV&dCQ6MFt!c2sqEu~F`lLpP z>gbu`VZ;;ZT&WBn7yJeN?sqpvb|Epe!cr`L<(ms#2QJBem=vc$Qtem9=PmwPH}upT z7HpJn6oh@VbTgql3${qN5Hvox=kr+Tlc(pPU}Z>11BO6LYe^48NI|| zw8@lb685oRlXMe{ExhvW<$}H&d!Iu^RcI;{bVQrMCg_OendPK6u)t|_3Ob@Y!%eyx z3+l7#iJy1J%Xaj|PCk#A<6Yq;Wg@xp^QT^K{OyYQ4VyjBZc? z&rm_?vrTx>&-7kSg&lqMmmzKc>)(u_?5&foBUQ(O_0shO zoeFb*oBm9C2sK`4fh2nuO)GXpr+#nak_mdPF;GgLMNw3Eh6Bc2ZP^nMWJ0 z&4b&I9;89~VWbJY(nyU;Zp-dIQ@i0PGA<0mq_9{pNWnqAc((U{)i>dE9YZZbpROki zguo)TkVXVSz#Pcua}YDd7Gg{Pa;51&(R@nP;6GsUq$%ZaxgvW2+L0+aRMgf_@qxKwA-#1gwBW=kdvN6E*A#)j6PyG zD}VFNQH}a6I!UEekwx~8p3f0SK1hm#${>SXQOVyJ`^QPeIW+`@u#jA82nh-e0;}Gd zjZ*=EjkXEg6c!-_c9osfEd=FsxnQNRKvB8olgaC>r|ShPg+&j6SLY@5I#pxYN^e^8A&QNhmJs-6!Xf6%WfFCaJh^ zH+W}X>F#R`1Jr7D3HFWwx^$hOr3tx<9%KKKS>Wh5D!EYn7hkKt>|C>cq)|8Df3e2O7V~1KK1~ 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 8eec46ff8d13582d8abf3f55c06811d4e9b40bf4..ee71df31ea990763b5bf80e5dd788765059a41ec 100644 GIT binary patch delta 535 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 literal 4196 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 Yxg@`Y;gb#vktid%R3w-5mz+rSUk}ycSpWb4 literal 4716 zcmcInd2kcg8DE>VC0YA)SgXVGN|uFW8(H?s0t|LAHYmO?FyI3mtFpb=!n!QU7!r~a zOr1^$m)lNV5@^%R1WG&%<{HY;q{K{0(!ylo4lN0#aVAV4DP(Mp0uAYt!+X1#{L?V0 z807c+-oEdB-|xFt4V7hOoyi2@>a1Mn=b|2xAP5@%k3_@XJu~1U_E{7N1f!m)Hy9{1 z^+w$hUoe_PEb&Al{lRc&0~g_dauEXVpEDTytB;@JfSWmvY+vAOR+39bmb5SVI!S+Vk{=RNc;L-OAulpP535D1$ zU$EWd%k9QAJifXR%$NupdXz*ks$4X;BNX~SY5pNB?thd=9l^kAZ`j}I_4tBaKL{5{ zbD+;3@^oUw!GOyX=zvKF7vJ0oSJSoR@_9RYxK1Ln-rs%#7U=y$ai4#={hUJ)pFD#A z%XG`qWg3YlnGh319NfNQ+p%ras^K0*yb^A=>)K5+twgIt+r3|1FaB4S;irmt72Gb< zm1W4(615g>PssMtX-9oWHSzIqTdI;;WB>qTY&-V3k^f@C;Aj57DdI`E-L303%j6Qd z3T=;ek8gZ#N8N-XJ^^kQ>568`k|oJB+75H8BTE25-2CFXPfm&2#BmI8sa+;?N?q0V zBVFr43CVyokd}f>VL-Mxo90n2m8;`XUQ(V0q05T&HxfS`qoCd@ag_qOx*2-CmD*KhX>1G?SF(2}Q}K>@X1oq@y@FwZozJSs31*b#a-_M+u0+jwd`1GKbO;Hw2#lF>tTr`Eqd z`d|(dPXRaSeiQztKo5{cFzp zpm8lNEpEisl@d|^o}b-;(B8$Q=4X@vxBSuy>;sB z6EX3(T*-e(l;1xchBntL>J5k;2DB(z4CpKa{FFZh5vn1X=QmxDMWCkCNmRXiOo{;*=`lUz#1^lJ{T6E;%$}`vA@9iCc)K-ucctRb2p{gNt#yJSZ z)tYL|1JVIAtVCRbD@H#(wowo-o)*o%tr^$~r=~nfE|`CN}BHj%psTA}dVd}rO(f?+nXXOrPugPS>P4m*1TTE{r+qo0Qrj=|J zA=ciJ7d!u0^VY9m;s`?q3pB-GM%VpL_ov>6=WBPtv$TX(A@OF(KdDAFVxrSP!MDbhq?5z!Bi^~o{uIi2TR`fJ16l04O`3pm? z_ot&HO&#kd$Cs}>B!O8%TJWfXQWZP0rw^Wm zcQz^;ahFoc-q?HNr2JeW1#F~E&?xLmJHCYiIb@Dtk5#kywU7c1(jnM$s+{;v+ksOr zpBVVbdFXznxDwB+A8$Lh^RVVpOgv9A55M}oHhh>V@uZDIaj~)3j95Vw!!Gp{`4kR3 z13Jl087c?;^ou#_4;LPE-5Z{_fUnP||gYqlT+yT72AXwa6{ zhD(bEKH7&%3r+?>p?yv7JLnW?KN2w@MUsM7N87Ch5*f`X5-f!2F#)62+&+= zt^gGz72vLf!T~cp_9F*T9gaJE@zZU=t1zvK9mOT+smp #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);