Spielen Sie ein Video mit benutzerdefinierten Overlay-Grafik
-
11-10-2019 - |
Frage
Ich mag ein Video spielen (mit Ton) in einem einfachen GUI mit „Play“ und „Stop“ Tasten usw. Es gibt Klassen und Widgets in Qt-Phonon-Modul für das zu tun, und einige Beispiele. OK, so dass scheint einfach zu sein.
Aber jetzt muss ich einige benutzerdefinierte Grafiken zeichnen (die in dem Video auf der aktuellen Zeit ab) auf der Oberseite des gestreamten Videobildes. Ich habe nichts darüber in der Qt-Dokumentation. Was ist der üblicher Weg, dies zu tun? Erstelle ich nur eine benutzerdefinierte VideoWidget Widget und seine paintEventO außer Kraft setzen? In einer anderen Frage hier schien ein Typ Probleme damit zu haben.
würde Alle Zeiger geschätzt werden.
Lösung
Mit QGraphicsView und QGraphicsWidgets. Sie können Ihre Phonon :: VideoWidget in einem QGraphicsProxyWidget setzen und es wird verwendbar als QGraphicsWidget.
Für benutzerdefinierte Overlays, vererben QGraphicsWidget und außer Kraft setzen, die Farbe Funktion Ihrer eigenen Widgets zu zeichnen. Sie können sie zu der Szene hinzufügen, und sie werden auf Ihrem Video-Widget angezeigt werden.
Andere Tipps
Ihre Lösung kann nicht funktionieren, da Sie keinen QGLWidget
zu QGraphicsProxyWidget
hinzufügen können. Bitte sieh dir ... an
http://doc.qt.digia.com/qt/qgraphicsproxywidget.html
Beachten Sie, dass Widgets mit dem
Qt::WA_PaintOnScreen
Widget-Attribut gesetzt und Widgets, die eine externe Anwendung wickeln oder Controller kann nicht sein, eingebettet. Beispiele sindQGLWidget
undQAxWidget
.
Bitte korrigieren Sie mich, wenn ich falsch bin.