проигрывать фоновую музыку в цикле Qt

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

в заголовочном файле:

    QMediaPlayer * music = new QMediaPlayer();

в файле cpp:

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

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

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

 Bugfinger08 июн. 2016 г., 01:33
Используйте QMediaPlaylist для этого, как сказано в ответе p4plus2. Или попробуйте поработать сmediaStatusChanged сигнал. Вы можете подключить его к слоту, который проверяет статусQMediaPlayer::EndOfMedia и затем снова начинает воспроизведение. ... но предпочитаю QMediaPlaylist. :)

Ответы на вопрос(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();
 DJMcMayhem26 июл. 2019 г., 23:36
Вы знаете способ заставить это зацикливаться без паузы в середине?

Ваш ответ на вопрос