我有一个自定义QGraphicsItem类,在其中重写了绘画事件,如下所示

void MyRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem
*option, QWidget *widget)
{
    QRectF rec = boundingRect();

    //code to fill blured background fill
}


我需要用模糊的透明效果填充记录区域。这样我就可以看到MyRectangle的背景模糊了。

最佳答案

不必重新发明轮子,QGraphicsItem支持QGraphicsEffect,并且在可用的效果中是QGraphicsBlurEffect,因此您只需要使用它:

QGraphicsBlurEffect *effect = new QGraphicsBlurEffect;
item->setGraphicsEffect(effect);


输出:

c++ - 如何在Qt中绘制模糊的透明背景-LMLPHP

c++ - 如何在Qt中绘制模糊的透明背景-LMLPHP

注意:如果要创建新效果,正确的方法是从QGraphicsEffect继承并覆盖draw()方法,因此不必创建为每个项目实现相同效果的类。

09-10 01:31