Qt之窗体透明
来源:互联网 发布:好的淘宝文案 编辑:程序博客网 时间:2024/05/22 17:27
简述
关于窗体透明,经常遇到,下面我们针对常用的透明效果进行讲解:
- 全透明(主窗体、子窗体均透明)
- 主窗体透明(子窗体不透明)
- 子窗体透明(主窗体不透明)
- 简述
- 正常状态
- 全透明
- 效果
- 源码
- 主窗体透明
- 效果
- 源码
- 子窗体透明
- 更多参考
正常状态
正常状态下,效果如下:
全透明
这里,我们可以透过整个窗体观看到桌面的背景。
效果
源码
设置窗口的透明度,如下:
setWindowOpacity(0.5);
透明度取值范围:0.0(全透明) - 1.0(不透明),默认值为1.0。
主窗体透明
这里,我们可以透过窗体的一部分观看到桌面的背景。
效果
源码
使用paintEvent进行背景绘制
主窗体采用背景色:
void MainWindow::paintEvent(QPaintEvent *event){ Q_UNUSED(event); QPainter painter(this); // QColor最后一个参数80代表alpha通道,一般用作透明度 painter.fillRect(rect(), QColor(50, 50, 50, 80));}
主窗体采用背景图片:
首先,设置背景透明:
setAttribute(Qt::WA_TranslucentBackground, true);
然后,绘制窗体背景:
void QZXingWidget::paintEvent(QPaintEvent *event){ QPixmap covertPixmap(":/Images/background"); QPixmap pixmap(covertPixmap.width(), covertPixmap.height()); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); QPoint start_point(0, 0); QPoint end_point(0, pixmap.height()); //QLinearGradient进行渐变色设置 QLinearGradient gradient(start_point, end_point); gradient.setColorAt(0, QColor(255, 255, 255, 100)); gradient.setColorAt(0.5, QColor(255, 255, 255, 150)); gradient.setColorAt(1, QColor(255, 255, 255, 255)); painter.fillRect(rect(), QBrush(gradient)); painter.setCompositionMode(QPainter::CompositionMode_SourceIn); painter.drawPixmap(0, 0, covertPixmap); painter.end(); QPainter painter2(this); painter2.drawPixmap(0, 0, pixmap);}
子窗体透明
这部分在博客中已经分享过了,这里就不再过多阐述,请参考:Qt之透明提示框
更多参考
- Qt之设置QWidget背景色
2 0
- Qt之窗体透明
- Qt之窗体透明
- Qt之窗体透明
- Qt之窗体透明
- Qt 透明窗体实现
- qt窗体透明
- QT 窗体透明
- Qt 透明窗体实现
- Qt 透明窗体,圆角
- Qt 笔记---透明窗体
- QT 设置窗体透明
- Qt 透明窗体
- QT设置窗体透明
- Qt透明窗体
- Qt 透明窗体
- Qt窗体透明
- QT 窗体透明
- qt窗体透明---(转)
- HDU 5096 题解
- access使用vba代码查询msdn的不便之处
- Java中几种代码块的分析
- 如何使用IntelliJ IDEA 创建基于Maven构建的Web项目的过程
- APUE 1-6打印进程ID
- Qt之窗体透明
- jquery选择器整理
- 面向对象特征
- android开发步步为营之107:android studio使用技巧之二(自动导入包和好用的插件介绍)
- 数据库那些事--greenDAO增删查改
- Android简单涂鸦以及撤销、重做的实现方法
- java加密技术一(单向加密算法)
- 任意格式的日期字符转换为linux
- <<设计模式>>读书笔记------单例模式