1

QPainter を使用して描画された QWidget に楕円があります。(特定の座標で) 特定の楕円を削除する方法はありますか?

ありがとう

4

1 に答える 1

0

次は塗らないでください。

各ペイント イベントで、 paintEvent() の実装は、ウィジェット全体、またはQPaintEventで指定された rect/region のいずれかを「最初から」描画します。したがって、各 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 は、そのような多くの要素を管理する必要がある場合に適したオプションかもしれません。

于 2013-03-07T10:06:14.863 に答える