最全的QgraphicsEffect设置

在Qt中,QGraphicsEffect有四个子类,分别为QGraphicsBlurEffect, QGraphicsColorizeEffect, QGraphicsDropShadowEffect, and QGraphicsOpacityEffect,用于实现模糊、着色、阴影、透明度功能
下面就是对这四种功能以及效果做测试
1.QGraphicsBlurEffect,将图片或窗口模糊化,呈现失焦效果
代码如下

QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	 // 创建高斯模糊效果
	QGraphicsBlurEffect* blurEffect = new QGraphicsBlurEffect;
	blurEffect->setBlurHints(QGraphicsBlurEffect::QualityHint);
	blurEffect->setBlurRadius(2); // 设置模糊半径

	// 将高斯模糊效果应用于控件的背景
	pTestFrame->setAutoFillBackground(true);
	QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255,255,255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
	QGraphicsEffect* oldEffect = pTestFrame->graphicsEffect();
	pTestFrame->setGraphicsEffect(blurEffect);

在这里插入图片描述

针对于setBlurHints函数主要用于模糊性能参数的设置
QGraphicsBlurEffect::PerformanceHint  //表明渲染性能是最重要的因素,但潜在的代价是较低的质量。
QGraphicsBlurEffect::QualityHint //表示渲染质量是最重要的因素,但潜在的代价是较低的性能。
QGraphicsBlurEffect::AnimationHint //表示模糊半径将是动画的,暗示实现可以保留源的模糊版本的缓存。如果源要动态更改,则不要使用此提示。

2.QGraphicsColorizeEffect,图片或窗口、控件着色
代码如下
QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
auto blur = new QGraphicsColorizeEffect(this);
    blur->setStrength(0.5);//强度0.0等于没有效果,而1.0意味着完全着色。测试发现越接近1,颜色值越深
    blur->setColor(Qt::green);//颜色
    QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255, 255, 255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
	auto oldEffect = pTestFrame->graphicsEffect();
  pTestFrame ->setGraphicsEffect(blur);

在这里插入图片描述

QGraphicsDropShadowEffect,图片或窗口、控件设置阴影
代码如下
QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
QGraphicsDropShadowEffect* shadoweffect = new QGraphicsDropShadowEffect(this);
    shadoweffect->setOffset(5,5);//阴影与原有图形的间距
    shadoweffect->setColor(Qt::green);
    shadoweffect->setBlurRadius(10);//阴影半径
    pTestFrame->setGraphicsEffect(shadoweffect);

在这里插入图片描述

4.QGraphicsOpacityEffect,图片或窗口、控件设置透明度
代码如下
//蒙版参数设置start
	QFrame* pTestFrame = new QFrame(this);
	pTestFrame->setFixedSize(QSize(200, 200));
	pTestFrame->move(100, 110);
	pTestFrame->setAutoFillBackground(true);
    auto rect = pTestFrame ->rect();
    QLinearGradient alphaGradient(rect.topLeft(), rect.bottomLeft());
    alphaGradient.setColorAt(0.0, Qt::transparent);
    alphaGradient.setColorAt(0.5, Qt::black);
    alphaGradient.setColorAt(1.0, Qt::transparent);
    //蒙版参数设置end

    auto blur = new QGraphicsOpacityEffect(this);
    blur->setOpacity(0.5);//透明度设置该值应该在0.0到1.0的范围内,其中0.0是完全透明的,1.0是完全不透明的。
    blur->setOpacityMask(alphaGradient);//蒙版设置,透明度和蒙版可单独设置、
    QPalette palette;
	palette.setBrush(QPalette::Background, QBrush(QColor(255, 255, 255, 40))); // 设置背景颜色
	pTestFrame->setPalette(palette);
    pTestFrame ->setGraphicsEffect(blur);

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pailugou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值