Ошибка отрисовки QPainter поверх QMediaPlayer

Рейтинг: -1Ответов: 1Опубликовано: 10.07.2023

Хочу сделать простенький виджет - видеопроигрыватель с кнопками поверх самого видео (например как в ютубе). Собрал простейшую сцену для видео плеера по этому посту. Отрисовка работает. Добавил в том же переопределённом paintEvent'е картинку кнопки "старт" по середине экрана. И она отрисовывается, но к сожалению только в статике.

Прсле переопределения mouseEnterEvent() и mouseLeaveEvent() столкнулся с проблемой, что когда останавливаешь видео, QPainer просто перестаёт работать и не отрисовывает ничего, пока снова не включишь видео, хотя сами эти методы, судя по отладке, работают. Почему так происходит? И как можно нормально отрисовать кнопки QPainter'ом поверх QMediaPlayer? Так же ещё есть неприятный момент, что весь оверлей не отрисовывается в областях виджета, где нет самого видео (масштабирую видео в переопределённом resizeEvent'е где вызываю метод fitInView()), соответственно видео масштабируется по размерам виджета с сохранением своих пропорций и остаются пустые области в виджете, на которых отрисовка так же невозможна.

Примечания: С QT знаком всего 1.5 месяца и не знаю всей внутренней кухни, пользуюсь версией 5.11.0 и пишу под astra-linux. А так же пишу с телефона - прошу прощения за разного рода ошибки и отсутствие полного кода. Код сделан прямо как в посте, за исключением пары самостоятельно переопределённых методов, которые я описал выше.

Ответы

▲ 0Принят

Всё до банальности просто. Необходимо лишь было добавить метод обновления для самой сцены (QGraphicsScene::update()), а не вызывать метод update() переопределённого мною класса QGraphicsView внутри paintEvent'a и все проблемы решились.