Воспроизвести видео с пользовательской оверлейной графикой - PullRequest
1 голос
/ 17 декабря 2010

Я хочу воспроизвести видео (со звуком) в простом графическом интерфейсе с кнопками «play», «stop» и т. Д. Для этого в модуле Qt Phonon есть классы и виджеты, а также несколько примеров. Итак, это кажется простым.

Но теперь мне нужно нарисовать некоторую пользовательскую графику (которая зависит от текущего времени в видео) поверх потокового видеоизображения. Я не нашел ничего об этом в документации Qt. Какой канонический способ сделать это? Должен ли я просто создать собственный виджет VideoWidget и переопределить его paintEvent? В другом вопросе у этого парня, похоже, были проблемы с этим.

Любые указатели приветствуются.

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Используйте QGraphicsView и QGraphicsWidgets.Вы можете поместить свой Phonon :: VideoWidget в QGraphicsProxyWidget, и он станет пригодным для использования в качестве QGraphicsWidget.

Для пользовательских оверлеев унаследуйте QGraphicsWidget и переопределите функцию рисования для рисования ваших пользовательских виджетов.Вы можете добавить их в свою сцену, и они появятся в верхней части вашего видео виджета.

1 голос
/ 07 ноября 2012

Ваше решение не может работать, потому что вы не можете добавить QGLWidget к QGraphicsProxyWidget. Пожалуйста, посмотрите на http://doc.qt.digia.com/qt/qgraphicsproxywidget.html

Обратите внимание, что виджеты с установленным атрибутом виджета Qt::WA_PaintOnScreen и виджеты, которые обертывают внешнее приложение или контроллер, не могут быть встроенный. Примеры QGLWidget и QAxWidget.

Пожалуйста, поправьте меня, если я ошибаюсь.

...