Qt之窗体透明
简述
关于窗体透明,经常遇到,下面我们针对常用的透明效果进行讲解:
- 全透明(主窗体、子窗体均透明)
- 主窗体透明(子窗体不透明)
- 子窗体透明(主窗体不透明)
正常状态
正常状态下,效果如下:
全透明
这里,我们可以透过整个窗体观看到桌面的背景。
效果
源码
设置窗口的透明度,如下:
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之窗体透明的更多相关文章
- Qt之窗体透明 (三种不同的方法和效果)
关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确...今天就在此一一阐述! 以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分) ...
- Qt 设置窗体透明
一.前言 在音频开发中,窗体多半为半透明.圆角窗体,如下为Qt 5.5 VS2013实现半透明方法总结. 二.半透明方法设置 1.窗体及子控件都设置为半透明 1)setWindowOpacity(0. ...
- 【翻译】利用Qt设计师窗体在运行时创建用户界面(Creating a user interface from a Qt Designer form at run-time)
利用Qt设计师窗体在运行时创建用户界面 我们利用Calculator窗体例子中创建的窗体(Form)来展示当一个应用(application)已经生成后,是可以在其运行时产生与例子中相同的用户界面. ...
- 设置窗体透明C#代码
上个示例是C#调用windows api 在原来代码上加入窗体透明,控件不透明代码: using System; using System.Runtime.InteropServices; using ...
- delphi 窗体透明
TransparentColor:=true; TransparentColorValue:=clFuchsia; Color:= TransparentColorValue; ...
- Qt创建窗体的过程
版权声明 本文为原创作品,请尊重作者的劳动成果.转载必须保持文章完整性,并以超链接形式注明原始作者“ tingsking18”和 主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口 ...
- paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制
源地址:http://blog.csdn.net/attilax/article/details/12343625 paip.提升用户体验---c++ qt自定义窗体(1)---标题栏的绘制 效果图: ...
- QT构建窗体(父窗体传为野指针)异常案例
[1]源码 工作中,时常会遇到各种各样的异常场景,有些异常场景很常见,必要备录,以防再犯. 分享本案例为:QT创建窗体时parent父窗体传野指针引起异常. 本案例源码如下: 1.1 默认新建一个QT ...
- 【转载】Layered Window(分层窗体,透明窗体)
本文转载自花间醉卧<Layered Window(分层窗体,透明窗体)> //为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明 ModifyStyleEx(0, WS_EX_ ...
随机推荐
- USACO 1.2 Transformations (模拟)
模拟题目,依照题目给定的要求变换图形就可以,变换的优先级依次减小. 这个题目我写的非常乱.只是最还还是勉强能够执行 /* ID:twd30651 PROG:transform LANG:C++ */ ...
- Error: CompareBaseObjectsInternal can only be called from the main thread
Posted: 01:39 PM 06-17-2013 hi, we're working on a project where we need to do some calculations on ...
- Atom介绍和安装步骤
Atom是全然基于web技术开发而成的一款编辑器,其底层架构依赖于chromium,google chrome浏览器也是基于此.编辑器的每一个窗体都是本地渲染的web页面,而且其风格与时下流行的sub ...
- Apache Kylin高级部分之使用Hive视图
本章节我们将介绍为什么须要在Kylin创建Cube过程中使用Hive视图.而假设使用Hive视图.能够带来什么优点.解决什么样的问题.以及须要学会怎样使用视图.使用视图有什么限制等等. 1. ...
- 学习ASP.NET MVC系列 - 还有比这更简炼的吗?把复杂的事情变简单了,贡献啊!
转自
- css sprite的实现
css sprite 为什么使用css sprite? 网页上的非常多静态小图片在载入时须要大量http请求,添加了响应时间.(哈哈.雅虎34条优化法则的第一条啊) css的background-po ...
- android帧动画,移动位置,缩放,改变透明度等动画解说
1.苦逼的需求又来了,须要实现一些动画效果,第一个想到的是播放gif图片,可是这样会占包的资源,而且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...
- Rep Invariant and Abstraction Function
* According to the Reading 13 of MIT 6.005 course In order to finish Lab 2, in which the ps 2 gives ...
- SpringCloud微服务Docker部署
前两写了两篇,都是为SpringCloud+Docker部署做准备,在部署的时候,不同服务器,不同的Docker容器之间的通信,还好没有掉到坑里去,在公司里用了新技术,还是很开心的,小有成就感,之前一 ...
- 17.UNP第一章 简介
获取时间的客户端代码: //客户端程序 #include "unp.h" int main(int argc, char **argv) { int sockfd, n; ]; s ...