图形视图(26):【类】QGraphicsBlurEffect[官翻]

本文详细介绍了QGraphicsBlurEffect类的使用方法,包括如何通过设置模糊半径和模糊提示来调整模糊效果的质量与性能,提供了示例代码展示不同模糊半径的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QGraphicsBlurEffect 类

QGraphicsBlurEffect类提供了一种模糊效果。

Header:#include < QGraphicsBlurEffect >
qmake:QT += widgets
Inherits:QGraphicsEffect
Inherited By:
Since:Qt 4.6

详述

模糊效果模糊了源。这种效果对于减少细节很有用,比如当光源失去焦点,而你想把注意力吸引到其他元素时。可以使用setBlurRadius()函数修改细节级别。使用setBlurHints()选择模糊提示。

默认情况下,模糊半径为5像素。模糊半径在设备坐标中指定。

img

参见QGraphicsDropShadowEffect、QGraphicsColorizeEffect、QGraphicsOpacityEffect。

公共类型

enum BlurHint

flags BlurHints

此枚举描述了可用于控制如何应用模糊效果的可能提示。这些提示可能不会对所有的油漆引擎产生影响。

ConstantValueDescription
QGraphicsBlurEffect::PerformanceHint0x00表示渲染性能是最重要的因素,但可能会降低质量。默认
QGraphicsBlurEffect::QualityHint0x01表示渲染质量是最重要的因素,但可能会降低性能。
QGraphicsBlurEffect::AnimationHint0x02指示将对模糊半径进行动画处理,表明实现可以保留源的模糊版本的缓存。 如果源将动态更改,请不要使用此提示。

属性

blurHints : BlurHints

此属性保留效果的模糊提示

使用PerformanceHint提示来表示您想要更快的模糊效果,使用QualityHint提示来表示您想要更高质量的模糊效果,或者在要设置模糊半径动画时使用AnimationHint。
默认情况下,模糊提示为PerformanceHint。

Access functions:

  • QGraphicsBlurEffect::BlurHints blurHints() const
  • void setBlurHints(QGraphicsBlurEffect::BlurHints hints)

Notifier signal:

  • void blurHintsChanged(QGraphicsBlurEffect::BlurHints hints)

blurRadius : qreal

此属性保存效果的模糊半径

使用较小的半径会导致更清晰的外观,而使用较大的半径会导致更模糊的外观。
默认情况下,模糊半径为5个像素。
半径以设备坐标给出,这意味着它不受比例尺的影响。

Access functions:

  • qreal blurRadius() const
  • void setBlurRadius(qreal blurRadius)

Notifier signal:

  • void blurRadiusChanged(qreal radius)

重写的公共函数

  1. virtual QRectF boundingRectFor(const QRectF &rect) const override

公共槽

  1. void setBlurHints(QGraphicsBlurEffect::BlurHints hints)
  2. void setBlurRadius(qreal blurRadius)

信号

  1. void blurHintsChanged(QGraphicsBlurEffect::BlurHints hints)
  2. void blurRadiusChanged(qreal radius)

重写的受保护的函数

  1. virtual void draw(QPainter *painter) override

演示代码

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    app.setApplicationName ("QGraphicsBlurEffect");

    QGraphicsScene scene;
    scene.setBackgroundBrush (QBrush(qRgb (39,117,106)));

    QPixmap pix("fish.png");

    QGraphicsBlurEffect *be;

    for (int i = 0; i < 6; ++i) {
        auto * pi = scene.addPixmap (pix);
        auto * st = scene.addSimpleText (QString("setBlurRadius (%1)").arg (i));
        be = new QGraphicsBlurEffect(&scene);
//        pi->setFlags (QGraphicsItem::ItemIsMovable);
        st->moveBy (pix.width ()*(i%3)+30,(pix.height ()+20)*(i/3));
        pi->setOffset (pix.width ()*(i%3),(pix.height ()+20)*(i/3)+15);
        st->setBrush (Qt::yellow);
        be->setBlurRadius (i);
        pi->setGraphicsEffect (be);
    }

    QGraphicsView view(&scene);
    view.show ();
    return app.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值