为什么QMediaGaplessPlaybackControl不存在?

时间:2018-09-08 07:08:27

标签: c++ qt media-player

我修改了Qt Media Player Example,试图获取 QMediaGaplessPlaybackControl 以产生淡入淡出效果。

这是我的代码:

auto service = m_player->service();
auto cc = service->requestControl("org.qt-project.qt.mediaplayercontrol/5.0");
Q_ASSERT(cc != nullptr);
QMessageBox::information(this, "", cc->metaObject()->className());
QMediaGaplessPlaybackControl* control = qobject_cast<QMediaGaplessPlaybackControl*>(cc);
Q_ASSERT(control != nullptr);

问题是,当我请求控件时,将返回nullptr。有人知道为什么吗?

我在带有MSVC编译器的Windows上使用Qt 5.11。

1 个答案:

答案 0 :(得分:1)

QemService 的documentation明确说明了如何获取指向媒体服务的 QMediaControl 实现的指针:

  

auto cc = qobject_cast<QMediaPlayerControl *>(service->requestControl("org.qt-project.qt.mediaplayercontrol/5.0"));

因此,为了获得cc作为 QMediaGaplessPlaybackControl 更改,

auto cc = service->requestControl("org.qt-project.qt.mediagaplessplaybackcontrol/5.0");

收件人:

auto *cc = static_cast<QMediaGaplessPlaybackControl *>(qobject_cast<QMediaControl  *>(service->requestControl("org.qt-project.qt.mediaplayercontrol/5.0")));