Не удается переопределить VideoWidget paintEvent () в QT C ++ - PullRequest
1 голос
/ 07 декабря 2010

Я пытаюсь нарисовать некоторые фигуры поверх VideoWidget из библиотеки Phonon, но я не могу переопределить метод paintEvent ().

Если я попытаюсь реализовать метод следующим образом:

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

Я получаю эту ошибку: нет функции-члена von Phonon :: VideoWidget :: paintEvent (QPaintEvent *), объявленной в классе on Phonon :: VideoWidget ’

Поэтому я решил создать заголовок myVideoWidget с защищенным методом paintEvent и реализовал его в 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".

Кто-нибудь может мне помочь? Что я делаю не так?

Большое спасибо!

1 Ответ

1 голос
/ 08 декабря 2010

Как я понял, вы поставили свой собственный класс, который наследует 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 вручную. Попробуйте использовать перерисовку вместо обновления, может быть.

...