QGraphicsBlurEffect 类
QGraphicsBlurEffect类提供了一种模糊效果。
Header: | #include < QGraphicsBlurEffect > |
---|---|
qmake: | QT += widgets |
Inherits: | QGraphicsEffect |
Inherited By: | |
Since: | Qt 4.6 |
详述
模糊效果模糊了源。这种效果对于减少细节很有用,比如当光源失去焦点,而你想把注意力吸引到其他元素时。可以使用setBlurRadius()函数修改细节级别。使用setBlurHints()选择模糊提示。
默认情况下,模糊半径为5像素。模糊半径在设备坐标中指定。
参见QGraphicsDropShadowEffect、QGraphicsColorizeEffect、QGraphicsOpacityEffect。
公共类型
enum BlurHint
flags BlurHints
此枚举描述了可用于控制如何应用模糊效果的可能提示。这些提示可能不会对所有的油漆引擎产生影响。
Constant | Value | Description |
---|---|---|
QGraphicsBlurEffect::PerformanceHint | 0x00 | 表示渲染性能是最重要的因素,但可能会降低质量。默认 |
QGraphicsBlurEffect::QualityHint | 0x01 | 表示渲染质量是最重要的因素,但可能会降低性能。 |
QGraphicsBlurEffect::AnimationHint | 0x02 | 指示将对模糊半径进行动画处理,表明实现可以保留源的模糊版本的缓存。 如果源将动态更改,请不要使用此提示。 |
属性
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)
重写的公共函数
- virtual QRectF boundingRectFor(const QRectF &rect) const override
公共槽
- void setBlurHints(QGraphicsBlurEffect::BlurHints hints)
- void setBlurRadius(qreal blurRadius)
信号
- void blurHintsChanged(QGraphicsBlurEffect::BlurHints hints)
- void blurRadiusChanged(qreal radius)
重写的受保护的函数
- 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();
}