2010-09-11 7 views

Répondre

4

Si vous venez de créer votre étiquette et de définir le widget phonon comme parent, l'étiquette doit apparaître par-dessus.

QLabel *label = new QLabel(phononWidget); 
label->setText("Text over video!"); 

(Je sais que c'est C++ et que vous travaillez en Python, mais il devrait être similaire)

Mise à jour: ci-dessus ne fonctionne pas pour la lecture vidéo avec accélération matérielle. Une alternative qui fonctionne est de créer une scène graphique et d'ajouter le widget vidéo ou le lecteur à la scène et d'utiliser un QGraphicsTextItem pour le texte. Réglage de la fenêtre à un QGLWidget permettra l'accélération matérielle:

QGraphicsScene *scene = new QGraphicsScene(this); 

Phonon::VideoPlayer *v = new Phonon::VideoPlayer(); 
v->load(Phonon::MediaSource("video_file")); 

QGraphicsProxyWidget *pvideoWidget = scene->addWidget(v); 

QGraphicsView *view = new QGraphicsView(scene); 
view->setViewport(new QGLWidget); //Enable hardware acceleration! 

QGraphicsTextItem *label = new QGraphicsTextItem("Text Over Video!", pvideoWidget); 
label->moveBy(100, 100); 

v->play(); 
+0

Notez également que, puisque l'étiquette ne sera pas dans une mise en page, vous devez gérer son positionnement manuellement. –

+0

Ok je mets self.label = QtGui.QLabel (« Bonjour, je suis le sous-titre », self.videoWidget) Mais il apparaît comme une boîte noire – Forested

+0

Cela fonctionne pour les widgets les plus ordinaires. Je suppose que pour être un widget vidéo, il peut y avoir des accélérations matérielles ou des superpositions qui rendent les choses un peu plus compliquées. Je n'ai pas utilisé le phonon, je vais regarder les docs et suggérer autre chose si je trouve quelque chose. –