【Qt】设置窗口透明度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010168781/article/details/82784909

1、使用setWindowOpacity设置透明度

setWindowOpacity(0.5);
设置完成会使窗体、标题栏、子控件都透明
在这里插入图片描述

2、使用样式表qss设置窗体透明

 dlg->setStyleSheet("QDialog{background-color: rgba(255, 0, 0, 0.5);}");
 wgt->setStyleSheet("QWidget{background-color: rgba(255, 0, 0, 0.5);}");
 frm->setStyleSheet("QFrame{background-color: rgba(255, 0, 0, 0.5);}");

其中0.5表示透明度,0表示全透明、1表示不透明;
也可以使用百分百表示如: frm->setStyleSheet(“QFrame{background-color: rgba(255, 0, 0, 50%);}”);
效果如下图,如果空间是单独的窗口,比如主窗口(QWidget)、弹出窗口(QDialog)不能透视出下层的窗口;
在窗口中布局的控件(如QWidget、QFrame)可以透视出父控件;
在这里插入图片描述

如果将透明度设置为0,效果图如下,透视出的是窗口的底色黑色;
哪位大神有解决方法,还请告知!

this->setStyleSheet("QWidget{background-color: rgba(255, 0, 0, 0);}");
 dlg->setStyleSheet("QDialog{background-color: rgba(255, 0, 0, 0);}");
 wgt->setStyleSheet("QWidget{background-color: rgba(255, 0, 0, 0.5);}");
 frm->setStyleSheet("QFrame{background-color: rgba(255, 0, 0, 0.5);}");

在这里插入图片描述

3、使用 paintEvent 绘图事件

 setAttribute(Qt::WA_TranslucentBackground, true);
 QPainter painter(this);
 painter.fillRect(this->rect(), QColor(255, 255, 0, 200)); 

QColor(255, 255, 0, 200)中200代表透明度,值从0~255
效果图如下,标题栏和子控件没有透明
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/82784909