Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

play background music in a loop Qt

I want to play background music continually in a loop until the game ends.

in the header file:

    QMediaPlayer * music = new QMediaPlayer();

in the cpp file:

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

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

Right now my music plays thru to the end but does not restart. How can I get it to loop over again again? Is there a QMediaPlayer member I can use, or should I run it in a while loop, or what?

like image 223
Life4ants Avatar asked Jun 07 '16 22:06

Life4ants


1 Answers

Sounds like what you want is QMediaPlaylist. QMediaPlaylist allows you to control the playback mode, and in this case you would use Loop. This approach has other advantages too, such as CurrentItemInLoop. CurrentItemInLoop will play the current playlist item in a loop, meaning that if you add more songs in the future you can select a song then loop only that track. Thus, you only need a single playlist for most needs. Below is some example code, I do not currently have a means to test it though (No Qt multimedia extensions installed on this machine). Should demonstrate the point reasonably well though.

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

QMediaPlayer *music = new QMediaPlayer();
music->setPlaylist(playlist);
music->play();
like image 188
p4plus2 Avatar answered Oct 24 '22 03:10

p4plus2