我正在努力将我的代码从Qt 4.8.4迁移到Qt 5.1.1,似乎遇到了一个特殊的问题。以前我使用Phonon库的视频小部件来允许用户与视频进行交互。由于不再支持Phonon,我一直在寻找通过Qt Designer替换我的Phonon小部件的方法,但我发现没有可用的替换小部件。有谁知道我们应该如何移植这个功能?
如果有人有任何见解,我们将一如既往地受到赞赏!
答案 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。 videoWidget
和player
在容器窗口小部件的头文件中声明为私有。
答案 1 :(得分:2)
您已经注意到there's no more Phonon
现在你所拥有的是QtMultimedia和QtMultimediaWidgets。如果您希望它们可用于您的项目并且您正在使用Qmake,那么请将.pro文件中的 QT 行更改为:
QT += widgets
为:
QT += widgets multimediawidgets
但是,这对设计师的互动没有任何作用。我认为这可能是done the work没有人make a custom widget extension到QVideoWidget的问题。
如果这是正确的,那么如果你想通过Qt设计师将QVideoWidget放入你的表单,你将不得不使用"Widget Promotion"。只需将普通的QWidget放入您的布局中,然后在表单中右键单击它并选择提升为...
至于将Phonon能力移植到新小部件的具体细节,我不知道什么是覆盖的,什么不是。这里没有答案,或者:
答案 2 :(得分:1)
虽然Qt本身不再包含Phonon,但有一个Qt5端口可用作外部库:
或者,您可以切换到新的QtMultimedia API: