为什么 QMediaGaplessPlaybackControl 不存在?
Why does QMediaGaplessPlaybackControl not exist?
我修改了 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 上使用带有 MSVC 编译器的 Qt 5.11。
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")));
我修改了 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 上使用带有 MSVC 编译器的 Qt 5.11。
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")));