воспроизведение фоновой музыки в цикле Qt

Я хочу играть фоновую музыку постоянно в цикле, пока игра не закончится.

в заголовочный файл:

    QMediaPlayer * music = new QMediaPlayer();

в файле cpp:

    startGame(){
    music->setMedia(QUrl("qrc:/sounds/backgroundmusic.mp3"));
    music->play();  }

   stopGame(){
   music->stop(); }

сейчас моя музыка играет до конца, но не перезагружается. Как я могу сделать так, чтобы это повторилось снова? Есть ли член QMediaPlayer, который я могу использовать, или я должен запустить его в цикле while, или что?

1 ответов


звучит так, как будто вы хотите это QMediaPlaylist. QMediaPlaylist позволяет управлять режимом воспроизведения, и в этом случае вы будете использовать Loop. Такой подход имеет и другие преимущества, такие как CurrentItemInLoop. CurrentItemInLoop будет воспроизводить текущий элемент списка воспроизведения в цикле, что означает, что если вы добавите больше песен в будущем, вы можете выбрать песню, то цикл только этот трек. Таким образом, вам нужен только один плейлист для большинства потребностей. Ниже приведен пример кода, в настоящее время у меня нет средств для его тестирования (нет Qt мультимедийные расширения, установленные на этой машине). Должен продемонстрировать точку зрения достаточно хорошо.

QMediaPlaylist *playlist = new QMediaPlaylist();
playlist->addMedia(QUrl("qrc:/sounds/backgroundmusic.mp3"));
playlist->setPlaybackMode(QMediaPlaylist::Loop);

QMediaPlayer *music = new QMediaPlayer();
music->setPlaylist(playlist);
music->play();