做了一個系統登入界面,登入背景圖是在Qt Designer中設定Stylesheet加載出來的。背景圖顯示後在背景圖相應位置添加使用者名,密碼,登陸按鈕等控件。
現在的問題是:當設定了登陸框為圓角時(styleSheet内容:#LoginDlg{background-image: url(:/Login/Bin/Debug/skins/black/images/loginIcon/login-logo.png);border-radius:20px},背景圖被裁剪成圓角了,但整個登陸框并沒有剪成圓角,四個角會露出白色部分。
解決方法:
1. 重新做了一個背景圖,photoshop編輯背景圖radius為20,四個角透明。
2.styleSheet隻需要加載背景圖Qss:#LoginDlg{background-image: url(:/Login/Bin/Debug/skins/black/images/loginIcon/login-logo.png);}
3.LoginDlg源程式中獲得該背景圖
如:QPixmap pm(":Login/Bin/Debug/skins/black/images/loginIcon/login-logo.png");
LoginDlg設定mask為pm.mask()即可 :setMask(pm.mask());
因為我的WindowFlags為Qt::FramelessWindowHint,是以不會放大縮小該登陸框。
如果可以放大縮小,應該加上
QPalette pal = this->palette();
pal.setBrush(QPalette::Background,QBrush(pm));
resize(pm.size());
setMask(pm.mask());