【问题标题】:play background music in a loop Qt循环播放背景音乐 Qt
【发布时间】:2020-07-06 23:51:13
【问题描述】:

我想循环播放背景音乐,直到游戏结束。

在头文件中:

    QMediaPlayer * music = new QMediaPlayer();

在cpp文件中:

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

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

现在我的音乐一直播放到最后,但没有重新开始。我怎样才能让它再次循环? 是否有我可以使用的 QMediaPlayer 成员,或者我应该在 while 循环中运行它,还是什么?

【问题讨论】:

  • 如p4plus2的回答中所说,使用QMediaPlaylist。或者尝试使用mediaStatusChanged 信号。您可以将其连接到检​​查状态QMediaPlayer::EndOfMedia 的插槽,然后再次开始播放。 ...但更喜欢 QMediaPlaylist。 :)

标签: qt qmediaplayer


【解决方案1】:

听起来你想要的是QMediaPlaylistQMediaPlaylist 允许您控制播放模式,在这种情况下您将使用Loop。这种方法还有其他优点,例如CurrentItemInLoopCurrentItemInLoop 将循环播放当前播放列表项,这意味着如果您将来添加更多歌曲,您可以选择一首歌曲然后只循环播放该曲目。因此,您只需要一个播放列表即可满足大多数需求。下面是一些示例代码,虽然我目前没有办法测试它(这台机器上没有安装 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();

【讨论】:

  • 你知道有一种方法可以让它在中间不停顿地循环吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
相关资源
最近更新 更多