1.窗口完全透明,但表单上的控件不透明。
设定表单的背景颜色,将背景颜色设定为完全透明。
1 q palette pal=palette();
2 (qpalette:3360 background,qcolor (0x00、0xff、0x00、0x 00));
3 set palette(pal);实验效果:
表格标题栏不透明。
表单客户区域中的控件不透明,QLabel控件只是单词显示,控件背景色是透明的。
表单客户区域是完全透明的。
另外,在网上看的方法:
set attribute(Qt :3360 wa _ translucent background,true);实验结果和上面的方法差不多,但有时表格会填满一些杂色斑点,找不到原因。
2.窗口和窗口上的控件是半透明的。
SetWindowOpacity)测试效果:窗口和控件半透明。
3.整个窗口不透明,部分透明。
在Paint事件中使用“清除”模式绘制。
1 void test window :3360 paint event(qpa intevent *)
2 {
3 QPainter p(this):
4p . setcompositionmode(qpainter :3360 composition mode _ clear);
5p.fillrect (10,10,300,300、Qt :3360 solid pattern);
6}测试效果:绘图区域完全透明。如果绘图区域中有控制柄,则控制柄不受影响。
以上实验均为基于Directfb的Qte测试。在Linux和Windows上,效果可能略有不同。
例如,在Windows的第三个实验中,如果绘图区域是黑洞,Window本身是半透明的,则Windows下面的内容加上半透明效果,而不是完全透明效果。