我有一个自定义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);
输出:
注意:如果要创建新效果,正确的方法是从
QGraphicsEffect
继承并覆盖draw()
方法,因此不必创建为每个项目实现相同效果的类。