Я не могу нарисовать QVideoWidget с QPainter

Я пытаюсь рисовать строки, пока у меня есть видео, как субтитры... У меня есть Phonon::QVideoWidget, в его конструкторе я делаю:

painter = new QPainter(this);

и я переписал событие рисования к этому, только для теста:

void MyVideoWidget::paintEvent(QPaintEvent* event)
{
    painter->drawLine(0, 0, 1, 1);
    //painter-> anything shows
}

Поэтому, когда я запускаю свой плеер, я ничего не вижу, что делал QPainter, только обычное видео, воспроизводящее какие-либо идеи?

1 ответ

Решение

Чаще всего делать QPainter местный экземпляр в paintEvent() функция.

QPainter painter(this);

Это приводит к begin() а также end() методы вызываются автоматически. Это необходимо для QPainter работать правильно. Вы можете попробовать вызвать их вручную в paintEvent() чтобы увидеть, если это имеет значение.

Еще одна вещь, которую вы можете попробовать наложить текст на видео, это создать QLabel в коде и сделать ваше видео виджет своим родителем. Это не требует подклассификации виджета видео или переопределения события рисования.

Другие вопросы по тегам