Почему QMediaGaplessPlaybackControl не существует? - PullRequest
0 голосов
/ 08 сентября 2018

Я изменил пример проигрывателя мультимедиа Qt , пытаясь получить 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. Кто-нибудь знает почему?

Я использую Qt 5.11 в Windows с компилятором MSVC.

1 Ответ

0 голосов
/ 08 сентября 2018

В документации из 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")));
...