Как лучше всего накладывать Phonon.VideoWidget?

Последние пару дней я пытался найти рабочее решение для наложения Phonon.VideoWidget на простой QLabel. К сожалению, мне не удалось найти работающее решение.

Вот что я пробовал:

  1. Воспитание. Я попробовал «обычный» родительский материал, обращаясь к QLabel к VideoWidget. Результат: метка вообще не отображается.

  2. QStackedLayout. Как предлагается здесь: http://www.qtcentre.org/threads/31490-Overlaying-Widgets-on-top-of-VideoWidget. Результат: ярлык отображается, но всегда позади видео.

  3. Графический вид. Я многое пробовал здесь, так как это выглядело наиболее многообещающе, но в конце концов загрузка процессора была слишком высокой, поэтому видео не воспроизводилось. Установка окна просмотра вида на QGLWidget не решила эту проблему. Результат: Оверлей работает, но видео не воспроизводится из-за высокой загрузки процессора.

  4. Подкласс VideoWidget. Как упоминалось здесь: https://wiki.qt.io/Overlay_widget_for_Phonon_VideoWidget. Я использовал тот же подход для создания наложения. В конце концов, это прекрасно работает, за исключением moveEvent. Некрасиво, если метка переустанавливается после завершения перемещения виджета. Есть ли способ обновить это уже при перемещении VideoWidget?

Я очень надеюсь, что кто-то может мне помочь (я использую PySide, но примеры на C++ тоже должны работать) или подскажет, где искать. Пожалуйста, дайте мне знать, если я должен поделиться фрагментом кода для воспроизведения.


person reneVolution    schedule 04.09.2015    source источник


Ответы (1)


Лучшее, что вы можете сделать, это создать новое окно, которое плавает над вашим видео-виджетом. Например, создайте QLabel без родителей и убедитесь, что он перемещается синхронно с вашим главным окном.

label = new QLabel();
label->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint);

В вашем подклассе QMainWindow переопределите moveEvent и resizeEvent и сделайте что-то вроде:

label->move(mapToGlobal(QPoint(0, height() - label->height())));

Это сохранит ярлык в левом нижнем углу, измените его в соответствии с вашими потребностями.

person Flavio Tordini    schedule 06.10.2015