Qt5 - 将视频播放器从4.8移植到5.1

时间:2013-11-05 21:08:26

标签: c++ qt qt5 qt-designer phonon

我正在努力将我的代码从Qt 4.8.4迁移到Qt 5.1.1,似乎遇到了一个特殊的问题。以前我使用Phonon库的视频小部件来允许用户与视频进行交互。由于不再支持Phonon,我一直在寻找通过Qt Designer替换我的Phonon小部件的方法,但我发现没有可用的替换小部件。有谁知道我们应该如何移植这个功能?

如果有人有任何见解,我们将一如既往地受到赞赏!

3 个答案:

答案 0 :(得分:3)

所有其他答案提供了非常有用的信息,但由于我正在寻找一个特定的功能实现,我猜测那些偶然发现的人也可能正在寻找一个,所以我会发布我的代码我的思考过程和我的设置的一些背景信息。

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,根据自己的喜好定位和调整尺寸。尽管设计器中没有交互式QWidget,但这使我能够嵌入QVideoWidget。 videoWidgetplayer在容器窗口小部件的头文件中声明为私有。

答案 1 :(得分:2)

您已经注意到there's no more Phonon

现在你所拥有的是QtMultimedia和QtMultimediaWidgets。如果您希望它们可用于您的项目并且您正在使用Qmake,那么请将.pro文件中的 QT 行更改为:

QT += widgets

为:

QT += widgets multimediawidgets
但是,这对设计师的互动没有任何作用。我认为这可能是done the work没有人make a custom widget extensionQVideoWidget的问题。

如果这是正确的,那么如果你想通过Qt设计师将QVideoWidget放入你的表单,你将不得不使用"Widget Promotion"。只需将普通的QWidget放入您的布局中,然后在表单中右键单击它并选择提升为...

至于将Phonon能力移植到新小部件的具体细节,我不知道什么是覆盖的,什么不是。这里没有答案,或者:

How to port Qt4.6 Phonon based media-application to Qt 5.1?

答案 2 :(得分:1)

虽然Qt本身不再包含Phonon,但有一个Qt5端口可用作外部库:

或者,您可以切换到新的QtMultimedia API: