1

Phonon ライブラリから VideoWidget に図形を描画しようとしていますが、paintEvent() メソッドをオーバーライドできません。

次のようにメソッドを実装しようとすると:

void Phonon::VideoWidget::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    painter.setPen(QPen(Qt::red,3));
    qDebug()<< "repintando";
    painter.drawEllipse(500,500,100,100);
}

このエラーが表示されます: クラス 'Phonon::VideoWidget' で宣言された 'void Phonon::VideoWidget::paintEvent(QPaintEvent*)' メンバー関数がありません</p>

そこで、保護されたメソッド paintEvent を使用して myVideoWidget ヘッダーを作成し、次のように mainwindow.cpp に実装することにしました。

void myVideoWidget::paintEvent(QPaintEvent *event){
    QPainter painter(this);
    painter.setPen(QPen(Qt::red,3));
    qDebug()<< "repintando";
    painter.drawEllipse(500,500,100,100);
}

プログラムは実行されますが、何も描画されないか、「repintando」メッセージが表示されます。

誰でも私を助けることができますか?私は何を間違っていますか?

どうもありがとうございました!

4

1 に答える 1

1

私が理解したように、Phonon::VideoWidget を継承する独自のクラスを配信し、それをプレーヤーのビデオ ウィジェットとして設定しましたか? はいの場合は、paintEvent を次のように変更する必要があります。

void myVideoWidget::paintEvent(QPaintEvent *event){
    Phonon::VideoWidget::paintEvent(event); // perform paint event from inherited class
    QPainter painter(this);
    painter.setPen(QPen(Qt::red,3));
    qDebug()<< "repintando";
    painter.drawEllipse(500,500,100,100);
}

しかし!VideoWidget が paintEvent を使用してビデオ フレームをレンダリングするかどうかはわかりません。paintEvent を手動で呼び出さなければならない可能性があります。update の代わりに repaint を使ってみてください。

于 2010-12-08T08:25:33.143 に答える