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。尝试使用重绘而不是更新。

于 2010-12-08T08:25:33.143 回答