我在 QWidget 上有使用 QPainter 绘制的椭圆,有没有办法删除某个椭圆(在某个坐标处)?
谢谢
下次不要画了。
在每个绘制事件上,paintEvent() 的实现“从头开始”绘制整个小部件或QPaintEvent中指定的矩形/区域。因此,每个paintEvent 都从一个空的画布开始,而不是从前一次绘制的内容开始。因此,如果您想擦除某些内容,则必须通过 update() 触发重绘,然后省略您不想绘制的元素。
void Speedometer::setSpeedLabelEnabled( bool enabled ) {
if ( m_speedLabelEnabled == enabled )
return;
m_speedLabelEnabled = enabled;
update(); // trigger repaint
}
void Speedometer::paintEvent( QPaintEvent* ) {
QPainter p( this );
if ( m_speedLabelEnabled ) {
p.drawEllipse( ... );
p.drawText( ..., m_currentSpeed, ... );
}
}
正如 Vinod Paul 所说: QGraphicsView 可能是一个不错的选择,以防您必须管理许多此类元素。