为什么QMediaGaplessPlaybackControl不存在?

问题描述 投票:1回答:1

我修改了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。有谁知道为什么?

我在Windows上使用Qt 5.11和MSVC编译器。

c++ qt media-player
1个回答
1
投票

QMediaService的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")));
© www.soinside.com 2019 - 2024. All rights reserved.