简述

关于窗体透明,经常遇到,下面我们针对常用的透明效果进行讲解:

  1. 全透明(主窗体、子窗体均透明)
  2. 主窗体透明(子窗体不透明)
  3. 子窗体透明(主窗体不透明)

正常状态

正常状态下,效果如下:

全透明

这里,我们可以透过整个窗体观看到桌面的背景。

效果

源码

设置窗口的透明度,如下:

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之窗体透明的更多相关文章

  1. Qt之窗体透明 (三种不同的方法和效果)

    关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确...今天就在此一一阐述!       以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分) ...

  2. Qt 设置窗体透明

    一.前言 在音频开发中,窗体多半为半透明.圆角窗体,如下为Qt 5.5 VS2013实现半透明方法总结. 二.半透明方法设置 1.窗体及子控件都设置为半透明 1)setWindowOpacity(0. ...

  3. 【翻译】利用Qt设计师窗体在运行时创建用户界面(Creating a user interface from a Qt Designer form at run-time)

    利用Qt设计师窗体在运行时创建用户界面 我们利用Calculator窗体例子中创建的窗体(Form)来展示当一个应用(application)已经生成后,是可以在其运行时产生与例子中相同的用户界面. ...

  4. 设置窗体透明C#代码

    上个示例是C#调用windows api 在原来代码上加入窗体透明,控件不透明代码: using System; using System.Runtime.InteropServices; using ...

  5. delphi 窗体透明

        TransparentColor:=true;    TransparentColorValue:=clFuchsia;    Color:= TransparentColorValue;  ...

  6. Qt创建窗体的过程

    版权声明 本文为原创作品,请尊重作者的劳动成果.转载必须保持文章完整性,并以超链接形式注明原始作者“ tingsking18”和 主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口 ...

  7. paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制

    源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: ...

  8. QT构建窗体(父窗体传为野指针)异常案例

    [1]源码 工作中,时常会遇到各种各样的异常场景,有些异常场景很常见,必要备录,以防再犯. 分享本案例为:QT创建窗体时parent父窗体传野指针引起异常. 本案例源码如下: 1.1 默认新建一个QT ...

  9. 【转载】Layered Window(分层窗体,透明窗体)

    本文转载自花间醉卧<Layered Window(分层窗体,透明窗体)> //为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明 ModifyStyleEx(0, WS_EX_ ...

随机推荐

  1. redis代码解析-dictionary类型

    dict本质上是为了解决算法中的查找问题(Searching),一般查找问题的解法分为两个大类:一个是基于各种平衡树,一个是基于哈希表. redis中的dict传统的哈希算法类似,它采用某个哈希函数从 ...

  2. HDU 5167

    范围 内的斐波那契的数不多,求出范围内的数,再暴力枚举即可. #include <iostream> #include <cstdio> #include <algori ...

  3. JavaSE 最easy出错的几个简单的问题

    案例1. package cn.itcast.oop; public class ThisDemo { public static void main(String[] args) { Student ...

  4. UVA 10127- Ones 数学

    Given any integer 0 ≤ n ≤ 10000 not divisibleby 2 or 5, some multiple of n is a number whichin decim ...

  5. uninstall OpenJDK9

    sudo apt--jre openjdk--jdk ///要慎用auto命令,会把所有的软件包删掉 https://www.linuxidc.com/Linux/2017-11/148941.htm ...

  6. IT关键词,面试知识问与答

    二叉树遍历的三种方式? 遍历是指依次访问⼆叉树中的每个元素.有三种遍历⽅法,分别是前序遍历. 中序遍历和后序遍历.它们是按照访问根节点和⼦节点的先后顺序命名的. • 前序遍历:先访问根节点,然后访问左 ...

  7. php常用知识集锦

    php常用知识集锦 很多位置都有写好的代码,自己做项目的时候可以直接拿来用,而不用自己写,比如现在看到的菜鸟教程. 1.判断是否为空 empty($_POST["name"]) 2 ...

  8. Java-MyBatis:MyBatis 3 动态 SQL

    ylbtech-Java-MyBatis:MyBatis 3 动态 SQL 1.返回顶部 1. 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架 ...

  9. Python学习历程之面对对象浅识

    # ===============================封装====================================# class Bar:# def __init__(se ...

  10. 写函数,输入n个数字输出最大值和最小值

    # ,写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}# 例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}(此题用到max(),min()内置 ...