c++ - 为什么 QMediaGaplessPlaybackControl 不存在?

标签 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。

最佳答案

documentation QMediaService 明确说明了如何获取指向媒体服务的 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")));

关于c++ - 为什么 QMediaGaplessPlaybackControl 不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52232891/

相关文章:

vb.net - VB.net循环mp3直到选择下一个IF

c++ - openMP 嵌套并行 for 循环与内部并行 for

c++ - 如何在不创建新对象的情况下引用 substr?

c++ - 如何在构建字符串后使用命名占位符在多行原始字符串上使用 sprintf?

visual-studio - cpp 文件中的 Qt、CMake、Visual Studio 和 Q_OBJECT

qt - 将qt移植到另一个操作系统就这么简单吗?

c# - C++中的字符串?

javascript - 匿名 qt 脚本函数的上下文?

java - 如何使用 MediaPlayer 和 MediaController 为 Android 实现音频播放器?

android - 在 SDK 8 中使用 Android MediaPlayer 进行流式传输