QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)

1.窗口整体透明,但是窗体上的控件不透明。

通过设置窗体的背景色来实现,将背景色设置为全透。

QPalette pal = palette(); 
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); 
setPalette(pal);

试验效果:

窗体标题栏不透明;

窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;

窗体客户区完全透明。

另外从网上看到的方法:

setAttribute(Qt::WA_TranslucentBackground, true);

试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。

2.窗口及其上面的控件都半透明:

setWindowOpacity(0.7)

试验效果:窗口及控件都半透明。

3.窗口整体不透明,局部透明:

在Paint事件中使用Clear模式绘图。

void TestWindow::paintEvent( QPaintEvent* ) 

                QPainter p(this); 
                p.setCompositionMode( QPainter::CompositionMode_Clear ); 
                p.fillRect( 10, 10, 300, 300, Qt::SolidPattern ); 
}

试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。

以上实验均是基于Directfb的Qte测试。在Linux下及Windows下效果会略有不同。

比如在Windows下第3个实验,绘制区域就是一个黑窟窿,如果Window本身半透,则是Window下面的内容加上半透效果,不是全透明效果。

http://mypyg.blog.51cto.com/820446/172661

时间: 2024-08-02 03:41:41

QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)的相关文章

QT下的几种透明效果

1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透. QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果: 窗体标题栏不透明: 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明: 窗体客户区完全透明. 另外从网上看到的方法: setAttribute(Qt::WA_

QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)

1.窗口整体透明,但是窗体上的控件不透明. 通过设置窗体的背景色来实现,将背景色设置为全透.  QPalette pal = palette();  pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));  setPalette(pal); 试验效果: 窗体标题栏不透明: 窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明: 窗体客户区完全透明. 另外从网上看到的方法:  setAttribute(Qt:

Android 编程下实现 Activity 的透明效果

实现方式一(使用系统透明样式) 通过配置 Activity 的样式来实现,在 AndroidManifest.xml 找到要实现透明效果的 Activity,在 Activity 的配置中添加如下的代码设置该 Activity 为透明样式,但这种实现方式只能实现纯透明的样式,无法调整透明度,所以这种实现方式有一定的局限性,但这种方式实现简单. android:theme="@android:style/Theme.Translucent" <activity android:na

一种透明效果的view

设置这个view背景色: [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3]; 效果如下:

专题:DUILIB Win32 透明效果

Win32 透明效果相关基础知识 Layered Windows 分层窗口.这是Windows2000开始引入的概念,重新定义了窗口的Hit Testing方法,以前都是把窗口按rectangle的方式裁剪,而把窗口加上WS_EX_LAYERED的Style后就可以根据窗口的形状和像素 值进行Hit Testing,这样我们的不规则窗口就变成了真正意义上的独立窗口,而不是传统的被一个不可见的矩形窗口所包含. 分层窗口重绘方式.透明效果产生 创建不规则窗口的三种方式 1. 通过区域相关API设置窗

CentOS下Qt窗口透明效果失效,成黑色背景的问题

一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行图 (1)Qt透明效果,centos下运行都会出现如下图1所示. 三.解决方法 (1)窗口透明,窗口上的控件不透明,其代码设置 [html] view plain copy setAutoFillBackground(false);  //这个不设置的话就背景变黑 setWindowFlags(Qt

Qt在Windows下的三种编程环境搭建(图文并茂,非常清楚)good

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | Docs | Qt Creator 3.0 | Debuggingand Analyzing | Setting Up

Qt在Windows下的三种编程环境搭建

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台.编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | Docs | Qt Creator 3.0 | Debuggingand Analyzing | Setting Up

CSS3在hover下的几种效果

CSS3在hover下的几种效果代码分享,CSS3在鼠标经过时的几种效果集锦 效果一:360°旋转 修改rotate(旋转度数) * { transition:All 0.4s ease-in-out; -webkit-transition:All 0.4s ease-in-out; -moz-transition:All 0.4s ease-in-out; -o-transition:All 0.4s ease-in-out; }*:hover { transform:rotate(360de