Qt FramelessWindow设置边框阴影无效解决办法

在使用为顶层窗体添加阴影效果的时候,发现加载了以后没有效果但是子控件在设置阴影的时候就有效果了,折腾了一番发现,可以利用子控件来变相的实现阴影效果。针对FramelessWindow总结了一个解决方案如下:

1.首先顶层窗口得设置为

setWindowFlags(Qt::FramelessWindowHint); //设置为无外部边框   
setAttribute(Qt::WA_TranslucentBackground ); //设置窗口为透明  

2. 添加一个QLabel作为背景图片

m_pback= new QLabel(this);  
m_pback->setGeometry(0,0,this->width()-10,this->height()-10);  
m_pback->setObjectName("MainWidget"); //此处设置ObjectName是为了加载qss效果  
QGraphicsDropShadowEffect *Shadow = new QGraphicsDropShadowEffect();  
Shadow->setBlurRadius(8.0);  
Shadow->setColor(QColor(63, 63, 63, 180));  
Shadow->setOffset(8.0);  
m_pback->setGraphicsEffect(Shadow);   

以上的原理是将图片的右边边缘和下部边缘拿出10px来显示阴影效果,因为顶层容器窗口是透明的,所以将作为子控件的背景图片加上阴影显示在透明的窗体边缘。
至此,阴影效果添加完毕 

转载于:https://my.oschina.net/u/1262980/blog/679314

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值