我有一个自定义的 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()
方法,所以没有必要创建一个为每个项目实现相同效果的类。
关于c++ - Qt中如何绘制模糊的透明背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48706480/