我正试图在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 *)'成员函数
所以我决定使用受保护的方法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”消息。
任何人都可以帮助我吗?我做错了什么?
非常感谢!
答案 0 :(得分: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。尝试使用重绘而不是更新。