做了一个系统登录界面,登录背景图是在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());