2010-12-07 18 views
1

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

私はこのような方法を実装しようとした場合:「フォノン::クラスで宣言されていない「空フォノン:: VideoWidget :: paintEvent(QPaintEvent *」)メンバ関数:私はこのエラーを取得する

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

をVideoWidget」

だから私は、保護された方法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); 
} 

とPR ogramは動作しますが、何も描画しないか、または "repintando"メッセージを表示しません。

誰でも手伝ってもらえますか?私は間違って何をしていますか?

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

+0

ウィジェットのサイズを変更(最小化/最大化)するときに何か表示されますか? myVideoWidgetクラスのupdate()メソッドを呼び出してみてください。それは何かをしますか? –

+0

あなたが言うことを試しましたが、何も見えず、qDebug()に送信するメッセージも見えません。これは、メソッドが実行されていないことを意味します。 同じことに感謝します! – nico

答えて

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); 
} 

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

+0

私はそれが良い考えだと思うが、うまくいかない。それは、私が楕円だけを見ることができ、ビデオを見ることができない場合に便利です。問題は、メソッドをうまく上書きしないということです。 paintEventEventが実行されないようにするには間違っていることがありますが、何がわかりません。 おそらくパラメータがOKではないので、シグネチャはVideoWidgetのものと一致しませんが、私はすでにチェックしています。 同じようにありがとうございます! – nico

+0

私は同じ問題を抱えていますが、これを解決しましたか?ありがとう... – fredcrs

+0

私はVideoWidgetがpaintEventを使って何かをレンダリングしないかもしれないと言っています。 VideoWidgetに半透明のウィジェットを追加し、代わりにそのウィジェットにペイントすることができます –

関連する問題