首页 > 其他分享 >在QT中的QGraphicsEffect详细说明

在QT中的QGraphicsEffect详细说明

时间:2024-07-03 23:27:55浏览次数:3  
标签:QT 效果 QGraphicsPixmapItem pixmapItem 模糊 详细 QGraphicsEffect QGraphicsBlurEffect

QGraphicsEffect 是 Qt 框架中用于为图形项(如 QGraphicsItemQGraphicsPixmapItemQWidget 等)添加视觉效果的基类。通过使用 QGraphicsEffect,你可以改变图形项的外观,如添加模糊、阴影、颜色化、透明度等效果。

以下是如何使用 QGraphicsEffect 的一些基本步骤:

  1. 选择或创建效果

    • Qt 提供了一些预定义的 QGraphicsEffect 子类,如 QGraphicsBlurEffect(模糊效果)、QGraphicsDropShadowEffect(阴影效果)、QGraphicsColorizeEffect(颜色化效果)和 QGraphicsOpacityEffect(透明度效果)等。
    • 如果需要自定义效果,你可以创建 QGraphicsEffect 的子类并重写 draw() 方法。
  2. 设置效果

    • 创建一个 QGraphicsEffect 对象(或使用预定义的子类)。
    • 使用 QGraphicsItem 或 QWidget 的 setGraphicsEffect() 方法将效果应用到图形项上。
  3. 管理效果

    • 如果需要更新效果(例如,更改模糊半径或阴影偏移量),请调用效果的 update() 方法。
    • 如果你的自定义效果需要更改源的边界矩形,你可以重写 boundingRectFor() 方法,并在矩形发生变化时调用 updateBoundingRect()
    • 如果源发生更改(例如,图形项的像素图发生变化),请调用 sourceChanged() 方法以通知效果进行更新。
  4. 调整效果属性

    • 对于某些效果(如 QGraphicsBlurEffect),你可以调整其属性(如模糊半径)来改变效果的外观。
  5. 移除效果

    • 要从图形项中移除效果,只需调用 setGraphicsEffect(nullptr)

以下是一个简单的示例,演示如何使用 QGraphicsBlurEffect 为 QGraphicsPixmapItem 添加模糊效果:

#include <QGraphicsPixmapItem>  
#include <QGraphicsBlurEffect>  
#include <QGraphicsScene>  
#include <QGraphicsView>  
  
// ...  
  
// 创建一个 QGraphicsPixmapItem  
QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(QPixmap("path/to/image.png"));  
  
// 创建一个 QGraphicsBlurEffect 对象并设置模糊半径  
QGraphicsBlurEffect *blurEffect = new QGraphicsBlurEffect();  
blurEffect->setBlurRadius(10); // 设置模糊半径为 10  
  
// 将效果应用到 pixmapItem  
pixmapItem->setGraphicsEffect(blurEffect);  
  
// 将 pixmapItem 添加到 QGraphicsScene 中,并显示在 QGraphicsView 中  
QGraphicsScene *scene = new QGraphicsScene();  
scene->addItem(pixmapItem);  
QGraphicsView *view = new QGraphicsView(scene);  
view->show();

在这个示例中,我们首先创建了一个 QGraphicsPixmapItem 对象,并使用一张图片作为其像素图。然后,我们创建了一个 QGraphicsBlurEffect 对象,并设置了其模糊半径。最后,我们将这个效果应用到 pixmapItem 上,并将其添加到 QGraphicsScene 中进行显示。

标签:QT,效果,QGraphicsPixmapItem,pixmapItem,模糊,详细,QGraphicsEffect,QGraphicsBlurEffect
From: https://blog.csdn.net/YuYao1110/article/details/140164714

相关文章

  • 在QT中如何通过QConicalGradient设置渐变
    在Qt中,QConicalGradient类用于创建一个锥形渐变,这种渐变是从一个中心点向四周辐射的。你可以设置中心点、渐变角度以及这些角度上对应的颜色。以下是一个使用QConicalGradient设置渐变的示例代码:#include<QPainter>#include<QConicalGradient>#include<QWidget>......
  • 微信小程序-详细登录流程 - (图解+代码流程)
    目录项目准备     注册小程序和创建项目一、登录页面效果图头部区域头部区域代码展示布局组件和图片组件的使用弹性布局display:flex;登录内容区域登录内容区域代码展示bindsubmit="uplogin"代码注解切换登录区域切换登录区域代码展示<radio-group/><radio/>......
  • 【实际应用-第七篇 物联网 mqtt模拟实现单向通信 】
    文章目录概要发布方(模拟设备)引入pom回调MqttCallback发布的方法订阅方(模拟服务器)引入pom回调MqttCallback订阅的方法测试结果实际应用概要两个springboot项目,一个作为发布方,一个作为订阅方,模拟设备向服务器发送mqtt请求上报消息,示例使用的是......
  • Qt Creator配置以及使用Git
    QtCreator配置以及使用Git引言一、QtCreator配置git二、QtCreator使用git2.1创建git仓库orgit项目导入Qt2.2配置远端,拉代码or上传代码2.3查看更改2.4更多细节可参考官方文档三、参考的博客以及文档引言QtCreator配置Git之后,可以看作是一个拥有图形用户......
  • Stable Diffusion做AI儿童绘本副业创收居然超主业?变现方式详细拆解!新手小白必看!
    AI儿童绘本各大平台上故事绘本、幼儿园儿歌、英文绘本、古诗词,从下图里,可以看出需求量很大AI儿童绘本实现方式\1.gpt\2.leonardo.ai\3.Midjourney\4.StableDiffusion变现方式\1.自制绘本售卖\2.卖书卖课针对各位初学者,这里列举了一条完整的学习计划,感兴趣的可......
  • Windows 11中的WSL(Windows Subsystem for Linux)详细介绍与安装过程
    文章目录Windows11中的WSL(WindowsSubsystemforLinux)详细介绍与安装过程一、WSL简介二、WSL安装过程三、WSL常见应用场景四、常见问题和解决方案五、结论Windows11中的WSL(WindowsSubsystemforLinux)详细介绍与安装过程WindowsSubsystemforLinux(WSL)是Micr......
  • Windows 安装docker详细步骤说明
    文章目录1.检查系统要求2.启用硬件虚拟化3.启用Hyper-V和容器功能4.下载并安装DockerDesktop5.配置DockerDesktop6.安装WSL27.验证Docker安装8.常见问题排查9.重点说明参考资源在Windows上安装Docker的详细步骤如下:1.检查系统要求确保您的Windows......
  • qt windeployqt 打包qt程序
    1、windeployqt路径2、增加环境变量3、运行指令windeployqtexe绝对路径--qmldir工程的绝对路径【注意1】最好单独建立一个目录,将exe单独复制进去,因为windeployqt会将依赖的各种文件和库拷贝到exe所在的目录【注意2】--qmldir是一个可选参数,如果没有使用qml则可以不......
  • 最新AI大模型系统源码,ChatGPT商业运营版系统源(详细图文搭建部署教程)+AI绘画系统,DALL-E
    一、前言人工智能语言模型和AI绘画在多个领域都有广泛的应用.....SparkAi创作系统是一款基于ChatGPT和Midjourney开发的智能问答和绘画系统,提供一站式AIB/C端解决方案,涵盖AI大模型提问、AI绘画、文档分析、图像识别和理解、TTS&语音识别、AI换脸等多项功能。支持GPTs应......
  • QTableWidget单元格设置控件居中以及背景颜色问题
    QTableWidget的单元格如果要显示其他控件,可以使用setCellWidget,但是控件没有居中,要想使控件居中,可以先创建一个QWidget对象,并设置布局器,然后将控件放到布局器中,并把这个QWidget对象放到单元格内,但是此时若要设置单元格的背景颜色,QTableWidget只能通过设置QTableWidgetItem的颜色来......