Qt中通过Qpixmap设置图片透明度

2023-05-16

最近看到美图秀秀的一些功能,可以手动设置图片的透明度并显示在其它图片上,所以自己动手做了个小Demo,实际效果如下:

(图片仅供参考使用)

可以看到拖动下方进度条,可以控制左上角图片的透明度。

方法如下:

新建一个Qt项目,在UI界面上拖放一个QLabel和一个QSlider,设置QSlider的数值范围为0~255,简单布局下即可。

代码如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPixmap>
#include <QPainter>
#include <QLabel>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private slots:
    void on_horizontalSlider_sliderMoved(int position);

private:
    Ui::Widget *ui;

    QLabel *m_label;    //设置透明度的图片的label
};

#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

#include <QDebug>
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //设置背景label的图片
    QPixmap pix_("./test.jpg");
    ui->label->setPixmap(pix_);

    //设置新的lable位置
    m_label = new QLabel(ui->label);
    m_label->setScaledContents(true);
    m_label->setGeometry(10,10,200,150);
    m_label->raise();
    m_label->show();
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_horizontalSlider_sliderMoved(int position)
{
    //设置新的图片的透明度
    QPixmap pix1_("./test.jpg");

    QPixmap temp(pix1_.size());
    temp.fill(Qt::transparent);

    QPainter p1(&temp);
    p1.setCompositionMode(QPainter::CompositionMode_Source);
    p1.drawPixmap(0, 0, pix1_);
    p1.setCompositionMode(QPainter::CompositionMode_DestinationIn);

    //根据QColor中第四个参数设置透明度,此处position的取值范围是0~255
    p1.fillRect(temp.rect(), QColor(0, 0, 0, position));
    p1.end();

    pix1_ = temp;
    m_label->setPixmap(pix1_);
}
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <layout class="QGridLayout" name="gridLayout">
   <item row="0" column="0">
    <layout class="QVBoxLayout" name="verticalLayout">
     <item>
      <widget class="QLabel" name="label">
       <property name="text">
        <string/>
       </property>
      </widget>
     </item>
     <item>
      <widget class="QSlider" name="horizontalSlider">
       <property name="maximum">
        <number>255</number>
       </property>
       <property name="orientation">
        <enum>Qt::Horizontal</enum>
       </property>
      </widget>
     </item>
    </layout>
   </item>
  </layout>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

参考

https://www.cnblogs.com/yanhuiw/p/3928868.html

结尾

只为记录,只为分享! 愿所写能对你有所帮助。不忘记点个赞,谢谢~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt中通过Qpixmap设置图片透明度 的相关文章

  • Qt中通过Qpixmap设置图片透明度

    最近看到美图秀秀的一些功能 xff0c 可以手动设置图片的透明度并显示在其它图片上 xff0c 所以自己动手做了个小Demo xff0c 实际效果如下 xff1a xff08 图片仅供参考使用 xff09 可以看到拖动下方进度条 xff0c
  • pyqt 设置QPixmap透明度

    span class token comment 获得含有透明度的QPixmap span span class token comment param filePath 图片路径 opacity 透明度 0 255 越小越透明 span
  • Qt QPixmap QImage 图片的等比例缩放到指定大小

    QPixmap pixmap path pixmap QPixmap fromImage imgShow pixmap pixmap scaled 152 76 Qt KeepAspectRatio Qt SmoothTransformat
  • PyQT4 和 QPixmap:加载大小为零的图像?

    我对 PyQt4 感到困惑 我在python2 6上尝试了以下步骤 In 1 from PyQt4 import QtGui In 2 import sys In 3 app QtGui QApplication sys argv In 4
  • 使用 PySide 在 QLabel 中显示视频流

    有人能给我指出如何在 PySide 中创建新的 QMovie 提供程序 的正确方向吗 我有一个视频流 我想尽可能简单地显示 没有音频 只是一系列具有未知且可变帧速率的帧 这个例子看起来很完美 只是我的视频来自非传统来源 它不是文件 而是格式
  • Qt:使用二维数组值更新像素图网格布局

    我正在使用 Visual Studio 2010 和 Qt 4 7 都是 Windows 中的 C 组合进行游戏 该游戏是战舰的克隆 基于控制台输入 我已经按照我想要的样子创建了 gui 在 Qt 设计器的 Qt 端 我的 gui 由一个
  • 修改无窗口 QLabel 的 Alpha 通道透明度

    我有一个非常小的 Qt 应用程序 它使用标签来显示 jpeg 图像 而无需先将其放入窗口中 我得到了很多帮助使用 QtGui 显示 QImage 现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明 我尝试过以下操作 但没有任何运
  • Qt 以最佳质量调整图像大小

    任何人都可以帮助我在 qt 中调整图像大小而不使图像像素化 这是我的代码 结果不如原来的质量 谢谢 QImage img name QPixmap pixmap pixmap pixmap fromImage img scaled widt
  • Qt C++ 在 GUI 线程之外显示图像(Boost 线程)

    我正在开发一个C 库 使用VS2015通过Qt实现其接口 在图书馆方面 3增强线程连续加载 3 个文件夹中的图像 我正在尝试以 3 种不同的方式显示这些图像QLabel 或同等学历QWidgets 所以线程体由这个功能组成 特别是通过利用设
  • 如何在Python 3中pickle QPixmap对象字典

    我想在Python 3中pickle QPixmap对象字典 例如 ImageQpixmapDict ImageQpixmapDict XXX QPixmap 在这种情况下 我想pickle Image Qpixmap Dict 变量 li
  • 从 QT5 中的 QPixmap 获取 HBITMAP (Windows)

    现在 QPixmap toWinHBITMAP 已被弃用 我找不到从 QPixmap 或 QImage 获取 HBITMAP 的方法 谷歌搜索 我发现有一个名为 qt pixmapToWinHBITMAP 的函数 它似乎可以满足我的需要 但
  • 线程:在 GUI 线程之外使用像素图是不安全的

    我正在构建一个音乐播放器 它使用 SqueezePlay 一个 SqueezeBox 控制器应用程序 检查状态 长话短说 我使用线程每 5 秒检查一次 Squeezeplay 的状态 如果歌曲标题发生变化 我让它更新标签 Qlabel 专辑
  • 如何使qt qgraphicsview缩放不影响点画图案?

    我在里面画了几个矩形QGraphicsView 我通过创建一个自定义点画图案来使用这些图案QBrush和我的QPixmap 这将按预期以默认缩放级别显示 当我打电话时view gt scale 矩形按我的预期显示得更大或更小 然而 Qt 已
  • 用于旋转 QWidget 的 QPropertyAnimation

    我是 Qt 新手 遇到一些问题QWidget回转 我在 QLabel 中有一个 QPixmap 我想要的是让它连续旋转 90 度 I know QPropertyAnimation我知道如何使用它 但我正在努力解决如何使用它来旋转QWidg
  • 为什么从数组转换为图像时会出现位移?

    我正在尝试从 numpy 数组创建 QPixmap numpy 数组图像将是二维的 即没有颜色信息 只有灰度 我正在尝试适应这一点answer https stackoverflow com a 9796921 1764089满足我的需要
  • 将 PyQt5 QPixmap 转换为 numpy ndarray

    我有像素图 pixmap self screen grabWindow 0 self x self y self width self height 我想将其转换为 OpenCV 格式 我尝试将其转换为numpy ndarray如上所述he
  • 如何创建QWidget的屏幕截图?

    我在 Qt Creator 中做作业 在其中绘制 QWidget 并且需要保存此 QWdiget 的某些部分 我试图解决这个问题 QPixmap pixmap pixmap copy rectangle rectangle is part
  • PyQt:使用 alpha 通道创建 QPixmap,而不是预乘颜色通道

    我想创建一个 QPixmap 来使用 QPainter 进行绘制 QPixmap 应支持透明度 而不使用预乘颜色通道 目前 我通过创建具有所需尺寸的 QPixmap 并用每个通道 包括 alpha 设置为零的 QColor 填充它来实现此目
  • 在 Qt 中用像素图画笔画一条线?

    一段时间以来 我正在使用 Qt C 开发一个简单的绘图和绘画应用程序 目前我正在使用 QPainter drawLine 进行绘制 并且工作正常 我想做的是用像素图画笔绘图 这是我可以做到的 我可以使用 QPainterPath 和 QPa
  • 加载 QPixmap 数据的更好方法

    更好的方法来做到这一点 没有QImage QImage image width height QImage Format RGB888 memcpy image bits m frameRGB gt data 0 height width

随机推荐

  • TreeSet录入重复的元素及保证录入&输出顺序一致的Java实现

    Java萌新在学习路上遇到的一个扯dan的问题解法 知识点 Set TreeSet TreeSet自然排序 TreeSet比较器排序 Comparator 原题目 请编写main 方法 xff0c 按以下要求顺序 循环接收控制台录入的字符串
  • SpringBoot无法访问static文件夹 404问题

    使用spring boot 配置好后端 导入前端页面到resources 61 gt static 文件夹后 无法访问 但此时进入调试模式 访问controller的路径时 发现后台已经传送出去json数据 64 RequestMappin
  • Ubuntu虚拟机反复在登录界面循环问题

    登录Ubuntu的时候发现登录界面不对劲 xff0c 之前从来没有看到过 而且无法登录 xff0c 反复在登录界面循环 百度 xff0c 说原因有两个 xff1a 1 环境变量修改有问题 xff1b 2 显卡驱动有问题 xff1b 均尝试数
  • pycharm设置笔记

    目录 区分级别显示高亮日志 区分级别显示高亮日志 效果 设置log highlighting里填入 s E RROR s 即可 s E RROR s
  • Ubuntu设置开机自启动

    文章目录 前言一 基本概念二 操作步骤1 终端输入2 设置路径 总结 前言 本文介绍如何在Ubuntu设置开机自启动 一 基本概念 除了系统上配置的默认启动应用程序之外 xff0c gnome session properties 程序使用
  • uniapp 发布网站遇到的问题(跨域,nginx代理失败,index无法打开,手机端无法访问等)

    跨域 如果开发的应用直接是作为手机APP是不存在跨域问题的 xff0c 但是如果是网站形式就要考虑这个问题了 分为两点 xff1a 1 调试时 可通过设置maintest 2 发布后 可通过Nginx配置文件设置代理 nginx代理失败 1
  • 怎么在linux上安装vnc

    1 首先检查是否安装了VNC服务 输入命令 xff1a rpm qa grep vnc 2 安装VNC xff0c 首次执行vncserver需要设置密码 xff0c 可以创建多个桌面 xff0c 执行多次vncserver命令即可 roo
  • VNC修改端口号

    1 vnc的默认端口是自己配置的 xff0c 想要修改vncserver的配置 xff0c 需要先找配置文件路径 root 64 node04 which vncserver usr bin vncserver 2 通过查找以前配置的端口
  • onNewIntent使用遇到的坑

    onCreate是用来创建一个Activity也就是创建一个窗体 xff0c 但一个Activty处于任务栈的顶端 xff0c 若再次调用startActivity去创建它 xff0c 则不会再次创建 若你想利用已有的Acivity去处理别
  • CentOS7使用firewall-cmd打开关闭防火墙与端口

    一 centos7版本对防火墙进行加强 不再使用原来的iptables 启用firewalld 1 firewalld的基本使用 启动 xff1a systemctl start firewalld 查状态 xff1a systemctl
  • 算法数学基础-排列组合(题目取自牛客网)

    基础理论 xff1a 排列 有限集的子集按某种条件的序化法排成列 排成一圈 不许重复或许重复等 从n个不同元素中每次取出m xff08 1 m n xff09 个不同元素 xff0c 排成一列 xff0c 称为从n个元素中取出m个元素的无重
  • 关于对Spring框架的详解

    Spring框架 基本概念Spring的形成主要模块三层架构Spring的优点对于Spring 框架中都用到设计模式 xff1a 基本概念 Spring框架是由于软件开发的复杂性而创建的 Spring使用的是基本的JavaBean来完成以前
  • vs2015 提示严重性代码说明项目文件行禁止显示状态 错误C4996 'scanf': This function or variable may be unsafe.

    在 vs2015 中使用scanf时总是提示 unsafe 报出错误 xff0c 解决办法是在已经建立的项目中 xff0c 以后可能需要经常进行再不同的项目进行这项操作 xff1a 项目 gt 属性 gt c c 43 43 gt 常规 g
  • base7. ThreadPool线程池类——生产者与消费者模型

    ThreadPool类图 数据成员 xff1a MutexLock mutex xff1a 一个MutexLock类型的互斥变量mutex Condition cond xff1a 一个Condition类型的条件变量cond string
  • Ubuntu下anaconda中PyCharm遇到的环境问题

    Table of Contents 运行找不到包文件 可以run xff0c 不能debug 运行找不到包文件 解救办法 xff1a 将包的路径添加到interpreter中 可以run xff0c 不能debug 去掉setting中py
  • origin画图——同一图中多组数据

    origin画图 同一图中多组数据 xff08 2维 xff09 导入数据分别确定X Y轴列数据 xff08 选中列 set as X Y xff0c 全选数据 xff0c 点击下方绘图图标
  • pacman用法

    Pacman 是archlinux 下的包管理软件 它将一个简单的二进制包格式和易用的构建系统结合了起来 不管软件包是来自官方的 Arch 库还是用户自己创建 xff0c Pacman 都能方便得管理 pacman Sy abc 和源同步后
  • Spring注解-1-SpringBoot是如何处理注解的

    本文基于Spring 5 2 7 这是个很大的话题 xff0c 但是是个非常实在的话题 xff0c 注解天天用 xff0c 处处用 xff0c 请问你知道他是怎么起作用的吗 xff1f 如果你使用了注解 xff0c 那么一定有代码在什么地方
  • Qt对当前界面进行截图并保存

    Qt提供了对界面截图的功能 xff0c 非常简单 xff0c 只需要2行即可截图并保存下来 xff0c 如下 xff1a QPixmap pixMap 61 QPixmap grabWidget this pixMap save 34 my
  • Qt中通过Qpixmap设置图片透明度

    最近看到美图秀秀的一些功能 xff0c 可以手动设置图片的透明度并显示在其它图片上 xff0c 所以自己动手做了个小Demo xff0c 实际效果如下 xff1a xff08 图片仅供参考使用 xff09 可以看到拖动下方进度条 xff0c