Я работаю над переносом кода из Qt 4.8.4 в Qt 5.1.1 и, похоже, столкнулся с особой проблемой. Раньше я использовал виджет видео-библиотеки Phonon, чтобы пользователи могли взаимодействовать с видео. Поскольку Phonon больше не поддерживается, я искал способ заменить свой виджет Phonon через Qt Designer, но не нашел доступного виджета замены. Кто-нибудь знает, как мы должны портировать эту функциональность?
Если у кого-то есть понимание, оно ценится, как всегда!
Все остальные ответы предоставляют очень полезную информацию, но поскольку я искал конкретную и функциональную реализацию, я предполагаю, что люди, которые наткнулись на это, могут также искать ее, поэтому я отправлю свой код вместе с моим мыслительным процессом и немного информации о предыстории моей установки.
videoWidget = new QVideoWidget;
player = new QMediaPlayer;
verticalLayout->addWidget(videoWidget);
player->setVideoOutput(videoWidget);
player->setMedia(QUrl::fromLocalFile("Resources\\videos\\example.m4v"));
videoWidget->show();
player->play();
Поэтому, чтобы пройти через это, в основном в моем проекте, у меня есть виджет, который является частью структуры stackwidget, на которой у меня есть некоторые QWidgets, такие как кнопки управления воспроизведением, ярлыки и т.д., И у меня раньше был мой проигрыватель Phonon. Я действительно не хотел генерировать все это программно, поэтому мне удалось найти решение.
Вышеупомянутый код был расположен в конструкторе виджета контейнера. В дизайнере я сделал простой, пустой verticalLayout, позиционировал и оценивал его по своему вкусу. Это позволило мне встроить QVideoWidget, несмотря на отсутствие интерактивного QWidget в Дизайнере. videoWidget
и player
объявляются закрытыми в файле заголовка виджета контейнера.
Вы уже отметили, что больше не Phonon
Теперь у вас есть QtMultimedia и QtMultimediaWidgets. Если вы хотите, чтобы они были доступны вашему проекту, и вы используете Qmake, измените строку QT в файле.pro из чего-то вроде:
QT += widgets
чтобы:
QT += widgets multimediawidgets
Тем не менее, это не повлияет на взаимодействие дизайнера. Я думаю, что это, вероятно, вопрос о том, что никто не проделал работу по созданию пользовательского расширения виджета для QVideoWidget.
Если это правильно, то если вы хотите разместить QVideoWidget в своей форме с помощью Qt-дизайнера, вам придется использовать "Widget Promotion". Просто поставьте обычный QWidget в свой макет, а затем щелкните его правой кнопкой мыши в форме и выберите " Содействовать"...
Что касается особенностей переноса возможностей Phonon на новые виджеты, я не знаю, что покрывало, а что нет. Здесь еще нет ответов:
Как перенести Qt4.6 на медиафайлы на основе Phonon на Qt 5.1?
Похоже, что хотя сам Qt больше не включает Phonon, в качестве внешней библиотеки доступен порт Qt5:
Кроме того, вы можете переключиться на новые API-интерфейсы QtMultimedia: