需求描述:两张图片,一张作为背景,另一张半透明,作为前景。透过前景可以看到背景图

1、用QPixmap对象载入背景图片,或者用paint代码在QPixmap自己画图;把QPixmap放入QLabel中显示;

2、用QPixmap对象载入半透明图片,或者用paint代码在QPixmap自己画半透明的图;把把QPixmap放入QLabel中显示;

3、把这两个label重叠,即可看到效果。

注意:

1、自己在QPixmap绘制半透明图片时,首先要使用fill函数将其整张Pixmap填充为透明。根据manual的要求,在paint有效时,fill函数是无效的,所以,要想使用fill,要么别在paint有效期间,要么执行paint.end()之后再fill。见示例代码

2、在本例中,label作为Pixmap的容器,label的如果设置了背景色,而Pixmap又是半透明时,透过Pixmap可以看到label的背景色(实质是Pixmap和label背景色的叠加)

使用样式表设置label半透明背景的代码:

border:2px solid;/*黑色实线边框,2px宽*/
border-color: black;
color:blue;/*蓝色文字*/
background-color: rgba(255, 0, 0, 100);/*红色半透明*/

代码:

#include <QPainter>
#include <QPen>
#include <QFile>
#include <QMessageBox>
#include <qDebug>
#include <QColor>
#include <QBrush>#define WIDTH 300
#define HEIGHT 300MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);pPixmap = new QPixmap(WIDTH,HEIGHT);//pPixmapFront = new QPixmap("front.png");//加载半透明图片pPixmapFront = new QPixmap(WIDTH,HEIGHT);//pPixmapFront->fill(Qt::transparent);//填充为透明ui->label_back->setScaledContents(true);//内容自适应label的大小,这样调整lable的大小就可以调整图片的大小ui->label_front->setScaledContents(true);//内容自适应label的大小,这样调整lable的大小就可以调整图片的大小
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QPainter painter(pPixmap);             // 创建QPainter对象QPoint point(100,100);//x, yQPen pen;painter.setBrush(Qt::cyan);painter.setPen(Qt::red);painter.drawRect(0, 0, WIDTH, HEIGHT);//红色边框,青色填充painter.setBrush(Qt::NoBrush);painter.setPen(Qt::red);painter.drawRect(0, 0, WIDTH/2, HEIGHT/2);//红色边框,无填充pen.setColor(Qt::red);pen.setWidth(20);painter.setPen(pen);painter.drawPoint(point);//用粗笔画点ui->label_back->setPixmap(*pPixmap);
}void MainWindow::on_pushButton_paintFront_clicked()
{QPainter painter(pPixmapFront);             // 创建QPainter对象QColor color;QPen pen;painter.end();//使fill函数生效pPixmapFront->fill(Qt::transparent);//透明填充Pixmap,清空pixmappainter.begin(pPixmapFront);color.setRgb(0, 0, 255, 100);//蓝色半透明painter.setPen(color);//设置笔和笔的颜色painter.setBrush(color);//设置刷子和刷子颜色painter.drawRect(0, 0, WIDTH, HEIGHT/2);//画蓝色半透明矩形pen.setColor(Qt::green);pen.setWidth(3);painter.setPen(pen);//设置笔和笔的颜色painter.drawLine(0,0,WIDTH, HEIGHT);//画一条绿色斜线col1,row1,col2,row2ui->label_front->setPixmap(*pPixmapFront);
}

QT半透明图片叠加显示相关推荐

  1. 针对LOGO的半透明图片的显示

    向往常一样插入图片,然后用IE的特有属性_display:none;将图片隐藏,但在其它浏览器就隐藏不了,然后用IE的滤镜在一个事先准备好的span里面插入PNG24图片. <!DOCTYPE ...

  2. 点阵汉字图片叠加显示【课程实验】

    这次的博客是我们的一次课程实验,实验内容主要是验证和完成汉字的区位码.国际吗.机内码之间的转换规则,以及在图片上叠加汉字. 本次实验要完成的内容主要i有三个: 验证汉字的区位码和机内码转换关系. 如果 ...

  3. Qt 下载图片并显示图片

    源码下载:图片下载器 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QHost ...

  4. Qt 视频上叠加透明图片

    Qt 视频上叠加透明图片 最近公司需要一个上位机软件,主要是全屏显示视频,在视频上面叠加透明图片. 调试了很多种方法,效果都不如意,主要是因为Qt 窗口背景不能被覆盖,透明背景,又不能播放视频. 我调 ...

  5. qaxwidget传递参数到html,记一次QT使用QAxWidget打开.html文件调用显示离线百度地图不能缩放,自定义图片不能显示解决方法...

    主要问题: 一开始用的是在线的,都没有什么问题,自定义图片均可以显示,可是后面试了一下离线百度地图,在qt中运行打开.html文件和在电脑上面直接双击打开此文件显示是有差别的,在qt生成的程序中,地图 ...

  6. QT 实现滚屏显示多张漂亮美眉图片(可放大缩小)

    作为新手小白的一些分享....... 其中一部分功能要求显示多张图片,如果图片总高度超过工具窗口的高度就要有滚动条出现,实现滚屏的效果,网上这部分内容少之又少,我就把效果和代码都贴出来供大家参考. 想 ...

  7. Qt项目背景图片无法显示

    问题描述: Qt加入背景图片,可运行时背景图片无法显示 这是Qt Designer中的界面,而在运行后背景是一片空白. 原因分析 我开始以为是我的qss代码出错了.当然代码开始也有一点问题,我没有把图 ...

  8. 【Qt】关于QLabel显示图片二三事

       在Qt程序的开发过程中,使用QLabel显示图片是经常会遇见的事情,不知道看到此篇内容的同行者是否也遇到了如下的烦恼. 加载图片之前,QLabel用于显示图片的边界范围不够明显. 显示图片时,不 ...

  9. 关于Qt绘制大图片无法显示的问题(缩放图片)

    Qt在加载图片时会把图片存入缓存(QPixmapCache),有时候图片过大而电脑内存不足的时候,程序会出现崩溃,因此在处理图片的时候可以考虑将图片缩放. 本处采用QImageWriter去重新保存文 ...

最新文章

  1. C++中引用()的用法和举例说明
  2. linux 添加虚拟网卡
  3. 技术盘点:消息中间件的过去、现在和未来
  4. jzoj6804-NOIP2020.9.26模拟jerry【dp】
  5. 【转】什么是CT使用的水模、体模
  6. c++层次遍历_数据结构与算法,弄懂图的两种遍历方式
  7. 2020中国数字化转型优秀案例征集
  8. IntelliJ IDEA 自定义控制台输出多颜色格式功能 --- 安装Grep Console插件
  9. 【渝粤教育】国家开放大学2019年春季 1349学前教育科研方法 参考试题
  10. vs2003远程调试方法
  11. Oracle数据库增删改查
  12. 执行mvn clean报错Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could
  13. linux c语言内存管理,C程序内存管理 第2页_Linux编程_Linux公社-Linux系统门户网站...
  14. 计算机的声卡怎么安装教程,外置声卡怎么连接电脑 外置声卡安装教程【图文】...
  15. 黄灯闪烁c语言程序,模拟交通灯C程序,用定时器0,如何实现黄灯闪烁功能
  16. android xml sax解析,《android用SAX解析xml》
  17. C++指针详解2_typedef函数声明类型、sizeof特性简介与数组指针间关系说明
  18. 《人性的弱点》第一章 待人接物的三大原则:读后感
  19. linux 限速命令,linux 路由器限速实现方法
  20. Visifire实现统计图

热门文章

  1. Git操作与仓库创建
  2. 人生路上前进的方向----有几条线贯穿自己的人生
  3. 【CTO讲堂】企业该如何打造自身的“安全免疫系统”?
  4. 巴特沃斯滤波器、切比雪夫、椭圆滤波
  5. 一只喵的西行记-14 蜗牛的金字塔说
  6. js屏蔽键盘esc键
  7. 基于hadoop平台hive数据库处理电影数据
  8. python自动翻译导学案_变量python学案
  9. 131个经典面试题目+答案
  10. 新款MacBook M2芯片 安装python