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

你可能感兴趣的:(Qt FramelessWindow设置边框阴影无效解决办法)