2010-09-11 17 views

回答

4

如果您只是创建标签并将声子小部件设置为父项,则标签应显示在其上方。

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

(我意识到这是C++,你是在Python工作,但它应该是相似的)

更新: 上面不会有硬件加速的视频播放工作。另一个可行的方法是创建一个图形场景并将视频小部件或播放器添加到场景中,并使用QGraphicsTextItem作为文本。将视口设置为QGLWidget将启用硬件加速:

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

另请注意,由于标签不在布局中,因此您需要手动管理其定位。 – 2010-09-12 05:34:39

+0

好吧,我把 self.label = QtGui.QLabel(“你好,这里是字幕”,self.videoWidget) 但它看起来就像一个黑盒子 – Forested 2010-09-12 09:15:52

+0

这适用于大多数普通的小部件。我想是一个视频小部件,可能会有一些硬件加速或重叠的东西,这使事情有点棘手。我没有使用声子的东西,我会看看文档,并建议其他东西,如果我找到任何东西。 – 2010-09-12 17:06:30