QT下的几种透明效果
2016-03-23 10:54
696 查看
http://blog.chinaunix.net/uid-23381466-id-3898511.html
1.窗口整体透明,但是窗体上的控件不透明。
通过设置窗体的背景色来实现,将背景色设置为全透。
![](http://blog.51cto.com/images/editer/InBlock.gif)
QPalette pal = palette();
![](http://blog.51cto.com/images/editer/InBlock.gif)
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
![](http://blog.51cto.com/images/editer/InBlock.gif)
setPalette(pal);
试验效果:
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;
窗体客户区完全透明。
另外从网上看到的方法:
![](http://blog.51cto.com/images/editer/InBlock.gif)
setAttribute(Qt::WA_TranslucentBackground, true );
试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
2.窗口及其上面的控件都半透明:
![](http://blog.51cto.com/images/editer/InBlock.gif)
setWindowOpacity(0.7)
试验效果:窗口及控件都半透明。
3.窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
![](http://blog.51cto.com/images/editer/InBlock.gif)
void TestWindow::paintEvent(
QPaintEvent* )
![](http://blog.51cto.com/images/editer/InBlock.gif)
{
![](http://blog.51cto.com/images/editer/InBlock.gif)
QPainter p(this );
![](http://blog.51cto.com/images/editer/InBlock.gif)
p.setCompositionMode( QPainter::CompositionMode_Clear );
![](http://blog.51cto.com/images/editer/InBlock.gif)
p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
![](http://blog.51cto.com/images/editer/InBlock.gif)
}
试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。
4.按钮透明
或:
1.窗口整体透明,但是窗体上的控件不透明。
通过设置窗体的背景色来实现,将背景色设置为全透。
![](http://blog.51cto.com/images/editer/InBlock.gif)
QPalette pal = palette();
![](http://blog.51cto.com/images/editer/InBlock.gif)
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00));
![](http://blog.51cto.com/images/editer/InBlock.gif)
setPalette(pal);
试验效果:
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;
窗体客户区完全透明。
另外从网上看到的方法:
![](http://blog.51cto.com/images/editer/InBlock.gif)
setAttribute(Qt::WA_TranslucentBackground, true );
试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
2.窗口及其上面的控件都半透明:
![](http://blog.51cto.com/images/editer/InBlock.gif)
setWindowOpacity(0.7)
试验效果:窗口及控件都半透明。
3.窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
![](http://blog.51cto.com/images/editer/InBlock.gif)
void TestWindow::paintEvent(
QPaintEvent* )
![](http://blog.51cto.com/images/editer/InBlock.gif)
{
![](http://blog.51cto.com/images/editer/InBlock.gif)
QPainter p(this );
![](http://blog.51cto.com/images/editer/InBlock.gif)
p.setCompositionMode( QPainter::CompositionMode_Clear );
![](http://blog.51cto.com/images/editer/InBlock.gif)
p.fillRect( 10, 10, 300, 300, Qt::SolidPattern );
![](http://blog.51cto.com/images/editer/InBlock.gif)
}
试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。
4.按钮透明
QPushButton *bt =new QPushButton(this); |
2 | bt->setText("ok"); |
3 | bt->move(200,100); |
4 | bt->setFlat(true);//就是这句能够实现透明 |
QPushButton { color: rgb(0,88,152) background-color: rgba(97%,80%,9%,50%) } 请参见C++ GUI Qt4编程(第二版)第19章 自定义外观
相关文章推荐
- Qt中的.qrc文件
- Qt简介
- Qt类图
- Qt布局
- Qt新建项目
- QT 模拟点击网页
- QT更改程序图标
- Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)
- Qt 图像类 QImage QPixmap QBitmap QPicture 之区别与用途
- Qt调用zlib库文件解压缩zip文件
- windows 环境下Qt Creator 的debugger模式配置
- QT学习--对话框
- QTableView中 允许编辑 item 编辑时候显示SpinBox
- QTableView中嵌入复选框CheckBox
- 关于QT的几个问题
- Qt实现网络数据传输 HttpClient
- VS2015中使用QT5.6.0
- Windows环境QtCharts安装配置说明
- qt 自定义菜单
- qt 编写插件 很好的解释了 WorkStation.exe 和trade.dll 之间如何调用