我正在将我的代码从 Qt 4.8.4 迁移到 Qt 5.1.1,并且似乎遇到了一个特殊的问题。以前我使用 Phonon 库的视频小部件来允许用户与视频进行交互。由于不再支持 Phonon,我一直在寻找一种通过 Qt Designer 替换我的 Phonon 小部件的方法,但我发现没有可用的替换小部件。有谁知道我们应该如何移植这个功能?
如果有人有任何见解,它一如既往地受到赞赏!
我正在将我的代码从 Qt 4.8.4 迁移到 Qt 5.1.1,并且似乎遇到了一个特殊的问题。以前我使用 Phonon 库的视频小部件来允许用户与视频进行交互。由于不再支持 Phonon,我一直在寻找一种通过 Qt Designer 替换我的 Phonon 小部件的方法,但我发现没有可用的替换小部件。有谁知道我们应该如何移植这个功能?
如果有人有任何见解,它一如既往地受到赞赏!
所有其他答案都提供了非常有用的信息,但是由于我正在寻找一个特定且功能性的实现,我猜偶然发现这个问题的人可能也在寻找一个,所以我将发布我的代码以及我的思考过程以及我的设置的一些背景信息。
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 结构的一部分,上面有一些 QWidget,如播放控制按钮、标签等,我之前有我的 Phonon 视频播放器。我真的真的不想以编程方式生成它,所以我设法找到了解决方案。
上述代码位于此容器小部件构造函数中。在设计器中,我制作了一个简单的空verticalLayout,根据我的喜好对其进行定位和调整大小。尽管设计器中没有交互式 QWidget,这让我可以嵌入 QVideoWidget。videoWidget
, 并player
在容器小部件的头文件中声明为私有。
你已经注意到没有声子了
现在你得到的是 QtMultimedia 和 QtMultimediaWidgets。如果您希望它们可用于您的项目并且您正在使用 Qmake,则将 .pro 文件中的QT行从以下内容更改:
QT += widgets
至:
QT += widgets multimediawidgets
不过,这不会对设计师交互产生任何影响。我认为这可能是没有人完成为QVideoWidget制作自定义小部件扩展的工作。
如果这是正确的,那么如果您想通过 Qt 设计器将 QVideoWidget 放入您的表单中,您将不得不使用"Widget Promotion"。只需将一个普通的 QWidget 放入您的布局中,然后在表单中右键单击它并选择提升到...
至于将 Phonon 能力移植到新小部件的具体细节,我不知道涵盖了什么,没有涵盖什么。这里也没有答案:
似乎虽然 Qt 本身不再包含 Phonon,但有一个 Qt5 端口可用作外部库:
或者,您可以切换到新的 QtMultimedia API: