天天看點

QDialog圓角

做了一個系統登入界面,登入背景圖是在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());

Qt
上一篇: Qt QDialog

繼續閱讀