qt绘图事件过滤器怎么不把原来的图去掉
时间: 2023-05-27 19:05:37 浏览: 47
在Qt绘图事件过滤器中,如果您想要保留原来的图形并在其上绘制新的图形,您需要在绘制新图形之前先将原来的图形绘制出来。您可以使用QPainter绘制原来的图形,然后再绘制新的图形。
以下是一个示例代码片段,其中绘制了一个红色矩形和一个蓝色矩形:
```cpp
bool MyWidget::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::Paint) {
QPainter painter(this);
// 绘制原来的图形
painter.fillRect(QRect(0, 0, width(), height()), Qt::white);
// 绘制新的图形
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::red);
painter.drawRect(QRect(10, 10, 50, 50));
painter.setBrush(Qt::blue);
painter.drawRect(QRect(30, 30, 50, 50));
return true;
} else {
return QObject::eventFilter(obj, event);
}
}
```
在这个示例中,我们首先使用白色填充绘制了一个矩形来清除以前绘制的任何图形。然后,我们绘制了一个红色矩形和一个蓝色矩形。最后,我们返回true以指示事件已被处理。