先看一下实现效果:


类 QGraphicsBlurEffect 可以实现图像的模糊效果,它的相关接口主要有如下两个:
- void setBlurHints(QGraphicsBlurEffect::BlurHints hints)
- void setBlurRadius(qreal blurRadius)
setBlurHints 是设置模糊质量的函数,它的参数有如下几种:
- PerformanceHint 表明渲染性能是最重要的因素,但可能会降低渲染质量。(默认参数)
- QualityHint 表明渲染质量是最重要的因素,但潜在的代价是降低性能。
- AnimationHint 表示模糊半径将是动画的,暗示实现可以保留一个源的模糊路径缓存。如果源要动态更改,则不要使用此提示。
setBlurRadius 设置模糊半径,半径越大,模糊效果越明显,默认为5。
完整代码如下:
头文件:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class QSlider;
class QGraphicsBlurEffect;
class ImageWidget : public QWidget
{
Q_OBJECT
public:
ImageWidget(QWidget* parent = nullptr);
~ImageWidget();
void setPixmap(const QPixmap& pixmap);
protected:
void paintEvent(QPaintEvent* event) override;
private:
QPixmap m_pixmap;
};
// ==========================================================
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
ImageWidget* m_pImageWidget = nullptr;
ImageWidget* m_pEffectImageWidget = nullptr;
QGraphicsBlurEffect* m_pBlurEffect = nullptr;
protected:
virtual void resizeEvent(QResizeEvent *event) override;
private slots:
void onChangeButtonClicked(void);
void onChangedSlder(int value)

本文介绍如何使用QGraphicsBlurEffect在Qt中实现图像模糊效果。通过设置模糊半径和提示,调整图像模糊的质量和性能。代码示例展示了如何在Widget中应用此效果。
最低0.47元/天 解锁文章
627





