Qt Widget 利用 Qt4.5 实现酷炫透明窗体

本文讲述的是Qt Widget 利用 Qt4.5 实现酷炫透明窗体,QWidget类中的每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 先来看内容吧。

Qt4.2引入了QWidget::setWindowOpacity函数, 可以为窗体设置透明度, 从0.0到1.0之间, 值越小越透明。 经过设置的窗体可以整体呈现透明的效果。 但这种设置比较粗糙, 只能设一个整体的效果,大概只有比如像拖动的时候能用一下,大多数时候都不太实用。在Qt4.5里引入了新的窗体透明特性, 是个Widget的Attribute, 叫做Qt::WA_TranslucentBackground。 这个属性可以为每个QWidget单独设置, 并且透明程度可以用绘制的颜色或图片的Alpha Channel值来控制。

笔者写了一个例子演示其奇妙的效果。 先看一个截图:

这个是笔者例子运行出来的效果, 背景是www.cuteqt.com雷人的主页。  下面简单介绍一下代码的实现。

TranslucentBackground控制窗体透明属性

例子主界面用QWidget, 其上放置四个控件, 上面两个是自定义的QWidget子类, 用在paintEvent中绘制了一幅透明底色的图片, 上书“CuteQt”几个大字; 下面两个是标准的QLabel控件, 但显示出两种不同的效果。

透明的控件的TranslucentBackground属性为true (继承了parent的属性), 而非透明的控件则在代码中强制将TranslucentBackground设为了false, 这样就造就了有意思的结果。 代码片段如下:

  1. label = new QLabel(”www.cuteqt.com”);
  2. label->setAttribute(Qt::WA_TranslucentBackground, false);
  3. label->setAutoFillBackground(true);

Alpha Channel控制透明度

将这个例子稍稍改动, 修改一下窗体背景色的Alpha值, 使之展现不同的透明度。 实现的方法是设置窗体的palette属性, 为Background这个ColorRole的颜色设置了alpha值, 代码片段如下:

  1. QPalette pal = palette();
  2. pal.setColor(QPalette::Background, QColor(255,0,0,200));
  3. setPalette(pal);

下图所示为alpha值100和200的不同显示效果。

怎么样, 这个例子挺有意思吧? 赶快下载完整的代码学习一下吧~ 有任何不明白blog或bbs留言~

translucent.tar.gz

小结:Qt Widget 利用 Qt4.5 实现酷炫透明窗体的内容讲完了,你也许也会认为实现的效果很炫吧,那么希望本篇文章能帮助你学习。

http://mobile.51cto.com/symbian-270155.htm

时间: 2024-12-09 08:11:31

Qt Widget 利用 Qt4.5 实现酷炫透明窗体的相关文章

利用HTML canvas制作酷炫星星坠地粒子特效

去年在电影院看过的电影,印象最深刻的,算是电影<你的名字>了,而且被其中的画面深深吸引了,尤其是陨石划过天空的场景,太美啦!所以想着哪天做一个canvas的流星效果.最近刚好看到油管上的一个视频,作者的主页就是陨石坠落的粒子效果为背景,虽然没有<你的名字>中那么写实,但也是很漂亮了,效果大概长这样,附上链接https://codepen.io/christopher4lis/pen/PzONKR 在这个基础上,我做了一些修改,将圆形粒子换成五角星,背景星空无限右移,且随机产生流星.

Android常用酷炫控件(开源项目)github地址汇总

转载一个很牛逼的控件收集贴... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style 等等. 一.ListView android-pulltorefresh一个强大的拉动

酷炫进度条 自定义SeekBar

前些天一同学给了我一个ui图,是这样子的: 需求: 1.看了ui图可以知道这类似android自带的seekbar控件, 2.一个水平进度条和一个圆形进度条: 3.圆形进度条显示环形刻度和当前进度值: 4.并且圆形进度可滑动操作: 最终实现效果: 废话不多说上代码: 水平的进度条:HorizonalProgress.class package com.totcy.magicprogress; import android.animation.ObjectAnimator; import andr

使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突

使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种冲突 如果你还在为处理滑动冲突而发愁,那么你需要静下心来看看这边文章,如果你能彻底理解这篇文章中使用的技术,那么,一切滑动冲突的问题解决起来就轻而易举了:先扔一个最终实现的效果图 先分析下效果图中实现的功能点 顶部下拉时背景图形成视差效果 上拉时标题栏透明切换显示 底部实现TabLayout+ViewPager+Fragment+RecyclerV

【FastDev4Android框架开发】神器ViewGragHelper完全解析之详解实现QQ5.X侧滑酷炫效果(三十四)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50043159 本文出自:[江清清的博客] (一).前言: 这几天正在更新录制实战项目,整体框架是采用仿照QQ5.X侧滑效果的.那么我们一般的做法就是自定义ViewGroup或者采用开源项目MenuDrawer或者Google提供的控件DrawerLayout等方式来实现.这些的控件的很多效果基本上都是采用实现onInterceptTouchEvent和onTouch

HTML5 Canvas玩转酷炫大波浪进度图

2016-12-13 11:52 by [当耐特], 1321 阅读, 2 评论, 收藏, 编辑 如上图所见,本文就是要实现上面那种效果. 由于最近AlloyTouch要写一个下拉刷新的酷炫loading效果.所以首选大波浪进度图. 首先要封装一下大波浪图片进度组件.基本的原理是利用Canvas绘制矢量图和图片素材合成出波浪特效. 本文的代码你可以在这里https://github.com/AlloyTeam/AlloyTouch/blob/master/refresh/wave/image_w

WPF换肤之六:酷炫的时区浏览小精灵

原文:WPF换肤之六:酷炫的时区浏览小精灵 由于工作需要,经常要查看到不同地区的 当前时间,以前总是对照着时区表来进行加减运算,现在有了这个小工具以后,感觉省心了不少.下面是软件的截图: 效果图赏析 在界面上,有能够冉冉升起的太阳或者月亮,有缓慢飘动的浮云,有青葱翠绿的花叶, 当然,也有显目的时区显示.如果要是放在WinForm时代,要实现这样的界面,真的是繁琐和复杂,但是在WPF中,利用XAML控制前台界面,利用CodeBehind控制窗口拖动,日月变换等等逻辑,真的是简便而且效果强大.其基于

【注释张豪华版 Path酷炫动画】极速get花式Path (支付宝支付成功动画)

转载请标明出处: http://blog.csdn.net/zxt0601/article/details/54018970 本文出自:[张旭童的博客](http://blog.csdn.net/zxt0601) 代码传送门:喜欢的话,随手点个star.多谢 https://github.com/mcxtzhang/PathAnimView 概述 新年第一篇技术文章哈,大家新年快乐,先来个简单点的,主要介绍工具的使用,预预热,下周一奉上一个骚气的购物车动画按钮,敬请期待. 在前文 给我一个Pat

【CSS进阶】试试酷炫的 3D 视角

写这篇文章的缘由是因为看到了这个页面: 戳我看看(移动端页面,使用模拟器观看) 运用 CSS3 完成的 3D 视角,虽然有一些晕3D,但是使人置身于其中的交互体验感觉非常棒,运用在移动端制作一些 H5 页面可谓十分博人眼球. 并且掌握原理之后制作起来也并不算废力,好好的研究了一番后将一些学习过程共享给大家. 下面进入正文:(一些 Gif 图片较大,需要等待一会) 3D 效果示意 百闻不如一见,先直观感受一下上述我所说的效果: 最好能点进去看看,这里我使用了带背景色的 div 作为示例,我们的视角