Я разрабатываю приложение Qt, которое может воспроизводить видео и показывать полосу прокрутки по пути. Размер окна НЕ ДОЛЖЕН превышать лимит в 720 пикселей по высоте и 1280 пикселей по ширине. Я использую MPlayer как подчиненный процесс и передаю ему winId() QWidget, и он отображает в нем видео. Теперь я хочу, чтобы другой виджет поверх этого виджета видео постоянно показывал какие-то результаты, но размещение виджета метки поверх виджета, содержащего видео, не служит цели, поскольку он снова и снова закрашивается видео. Любое обходное решение? Предложения по этому поводу?
Рисование поверх видео в виджете Qt
Ответы (3)
Я считаю, что при таком использовании MPlayer лучше всего будет создать второе окно.
Есть несколько способов, которыми вы можете пойти отсюда, более причудливый способ, который может не работать в некоторых версиях/конфигурациях Xorg, состоит в том, чтобы иметь второе окно того же размера, что и первое, и поместить его непосредственно поверх другого (с механизмом , чтобы переместить другое окно, когда одно из них перемещается), и сделать окно прозрачным, за исключением ваших элементов управления (прозрачность является проблемой для некоторых версий X, проверьте labs.trolltech.com для некоторых примеров этого).
Альтернативный метод, который, как мне кажется, использует VLC в полноэкранном режиме, состоит в том, чтобы второе окно было просто маленькой вещью с элементами управления и располагалось поверх первого окна со смещением и без рамки... таким образом, когда первое окно перемещается, положение второго окна обновляется.
Я предлагаю вам изучить фреймворк Phonon для воспроизведения видео. Он должен обрабатывать воспроизведение без вызова отдельного исполняемого файла, что, вероятно, решит проблему рисования.
Инкапсулируйте свое видео в виджет, испуская QImage в слот, который преобразует его в QPixmap, который вы рисуете на виджете во время переопределенного paintEvent().
Я не знаю, какое взаимодействие вы должны обеспечить с вашими видео, кроме «сообщения», но если вы хотите что-то необычное, QGraphicsView может предоставить вам множество таких эффектов.
Надеюсь это поможет.