2

字幕のようにビデオを再生しているときに文字列を描画しようとしています...コンストラクターにPhonon::QVideoWidgetがあります。

painter = new QPainter(this);

テストのためだけに、paintイベントをこれにオーバーライドしました。

void MyVideoWidget::paintEvent(QPaintEvent* event)
{
    painter->drawLine(0, 0, 1, 1);
    //painter-> anything shows
}

それで、プレーヤーを起動すると、QPainterが行ったことは何も表示されず、通常のビデオだけがアイデアを再生しますか?

4

1 に答える 1

0

QPainter関数内でローカルインスタンスを作成するのがより一般的paintEvent()です。

QPainter painter(this);

これにより、メソッドbegin()end()メソッドが自動的に呼び出されます。これらは、がQPainter正しく機能するために必要です。で手動で呼び出してpaintEvent()、違いが生じるかどうかを確認できます。

ビデオにテキストをオーバーレイするために試みる可能性のあるもう1つのことは、QLabelinコードを作成し、ビデオウィジェットをその親にすることです。これには、ビデオウィジェットのサブクラス化やペイントイベントのオーバーライドは必要ありません。

于 2012-06-05T04:32:12.087 に答える