您的位置:首页 > 编程语言 > Qt开发

QT下的几种透明效果

2016-03-23 10:54 696 查看
http://blog.chinaunix.net/uid-23381466-id-3898511.html

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 );


}

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

4.按钮透明

QPushButton *bt =new QPushButton(this);
2bt->setText("ok");
3bt->move(200,100);
4bt->setFlat(true);//就是这句能够实现透明
或:

QPushButton {
color: rgb(0,88,152)
background-color: rgba(97%,80%,9%,50%)
}
请参见C++ GUI Qt4编程(第二版)第19章 自定义外观
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: