2010-12-17 9 views
1

Ich möchte ein Video (mit Ton) in einer einfachen GUI mit "Play" und "Stop" -Schaltflächen usw. spielen. Es gibt Klassen und Widgets in Qt's Phonon-Modul dafür, und mehrere Beispiele. OK, das scheint einfach zu sein.Ein Video mit benutzerdefinierten Overlay-Grafiken wiedergeben

Aber jetzt muss ich einige benutzerdefinierte Grafiken (die von der aktuellen Zeit im Video abhängen) über das gestreamte Videobild zeichnen. Ich habe dazu in der Qt-Dokumentation nichts gefunden. Was ist der kanonische Weg, dies zu tun? Erstelle ich einfach ein benutzerdefiniertes VideoWidget-Widget und überschreibe dessen paintEvent? In einer anderen Frage schien ein Typ Probleme damit zu haben.

Alle Hinweise würden geschätzt.

Antwort

2

Verwenden Sie QGraphicsView und QGraphicsWidgets. Sie können Ihr Phonon :: VideoWidget in ein QGraphicsProxyWidget einfügen und es wird als QGraphicsWidget verwendbar.

Erben Sie für benutzerdefinierte Overlays QGraphicsWidget und überschreiben Sie die Paint-Funktion, um Ihre benutzerdefinierten Widgets zu zeichnen. Sie können sie zu Ihrer Szene hinzufügen und sie werden über Ihrem Video-Widget angezeigt.

1

Ihre Lösung kann nicht funktionieren, da Sie QGLWidget nicht zu QGraphicsProxyWidget hinzufügen können. Bitte schauen Sie auf http://doc.qt.digia.com/qt/qgraphicsproxywidget.html

Beachten Sie, dass mit Widgets der Qt::WA_PaintOnScreen Widget Attribut und Widgets, die mit einem externen Programm oder Controller wickeln kann eingebettet nicht werden. Beispiele sind QGLWidget und QAxWidget.

Bitte korrigieren Sie mich, wenn ich falsch liege.

+0

Es ist einige Zeit her, seit ich dies implementiert habe, und ich habe jetzt keinen Zugriff auf den Code. Aber ich kann dir versichern, dass ich es tatsächlich gelöst habe. Soweit ich mich erinnere, habe ich es gelöst, wie in der angenommenen Antwort beschrieben, aber ich kann mich irren. –

+0

Vielen Dank für Ihre schnelle Antwort Sebastian. Ich freue mich sehr, dass es für Sie funktioniert hat. Denkst du, es wäre möglich, in der nächsten Zeit auf den Code zuzugreifen und ihn (oder nur das wichtige Snippet) diesem Beitrag hinzuzufügen? – user1773762

+0

Ich denke, es wäre interessant für jeden hier zu sehen, wie das gemacht werden kann – user1773762

Verwandte Themen