Qt设置窗体透明
日期:2020-09-18 12:02:42
最后更新日期:2020-09-18 12:09:24
第一种方法, 全局设置窗体的透明度
setWindowOpacity(0.01);
0.01表示不透明的系数为0.01,意思就是几乎透明的效果。 这样设置后, 是窗体内的所有都设置为透明,包括子控件以及paintevent画出来的控件。这样做有点过于粗鲁。
第二种方法, 设置窗体背景透明
正常情况下, 如果直接用paintevent是画在窗体灰色的背景上面,即使画的内容本身是透明的,那么实际看起来,也不是透明,就需要将窗体背景设置为透明。用如下函数:
this->setAttribute(Qt::WA_TranslucentBackground, true);
这样再用paintevent里面,画一个透明的矩形当画布,再在上面画控件,类似这样:
[code lang="cpp"]
QPainter p(this);
p.setBackgroundMode(Qt::TransparentMode);
//p.setOpacity(0.01);
//这个alpha值 0表示透明, 255表示不透明
QColor tc(255, 0, 0, 1);
QBrush bgbrush(255, 0, 0, 1); //透明画布
bgbrush.setColor(tc);
QBrush mybrush(QColor(0, 255, 0, 255));
QRect rec1(0, 0, width(), height());
p.fillRect(rec1,bgbrush);
p.fillRect(QRect(0,0,100,100),mybrush);
[/code]