2010-12-07 98 views
1

我試圖從Phonon庫中的VideoWidget上繪製一些形狀,但我無法重寫paintEvent()方法。不能覆蓋QT中的VideoWidget paintEvent()C++

如果我嘗試實現這樣的方法:「無效的聲子:: 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圖運行,但它不繪製任何東西或顯示「repintando」消息。

任何人都可以幫助我嗎?我究竟做錯了什麼?

非常感謝!

+0

當您調整大小或更改小部件狀態(最小化/最大化)時,您是否看到一些內容?嘗試調用myVideoWidget類的update()方法。這是否做了什麼? – 2010-12-07 00:04:11

+0

我試着說你說的但我看不到任何東西,也看不到我發送給qDebug()的消息,這意味着該方法沒有被執行。 謝謝你一樣! – nico 2010-12-07 15:11:20

回答

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手冊。也許嘗試使用重繪而不是更新。