版权声明:本文为博主原创文章,未经博主允许不得转载。 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
效果图如下,标题栏和子控件没有透明