Python QT, отображать текст / метку над другим виджетом (фонон) - PullRequest
1 голос
/ 12 сентября 2010

Я делаю видеоплеер, использующий PySide, который связывает Python с фреймворком Qt.Я использую фонон (модуль) для отображения видео и хочу отображать текст над видео в качестве субтитров.Как я могу поставить другой виджет выше моего фононного виджета.Является ли opengl опцией?

1 Ответ

5 голосов
/ 12 сентября 2010

Если вы просто создаете свою метку и устанавливаете фононный виджет в качестве родителя, над ним должна появиться метка.

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();
...