1
我正在制作一个使用PySide的视频播放器,它是一个python绑定到Qt框架。我使用声音(模块)来显示视频,并且我想在视频上方显示文本作为副标题。我怎样才能把我的声子小部件上面的另一个小部件。是opengl的选项?python qt,在另一个部件(声子)上方显示文本/标签
我正在制作一个使用PySide的视频播放器,它是一个python绑定到Qt框架。我使用声音(模块)来显示视频,并且我想在视频上方显示文本作为副标题。我怎样才能把我的声子小部件上面的另一个小部件。是opengl的选项?python qt,在另一个部件(声子)上方显示文本/标签
如果您只是创建标签并将声子小部件设置为父项,则标签应显示在其上方。
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();
另请注意,由于标签不在布局中,因此您需要手动管理其定位。 – 2010-09-12 05:34:39
好吧,我把 self.label = QtGui.QLabel(“你好,这里是字幕”,self.videoWidget) 但它看起来就像一个黑盒子 – Forested 2010-09-12 09:15:52
这适用于大多数普通的小部件。我想是一个视频小部件,可能会有一些硬件加速或重叠的东西,这使事情有点棘手。我没有使用声子的东西,我会看看文档,并建议其他东西,如果我找到任何东西。 – 2010-09-12 17:06:30