如何检查Phonon声音是否已播放?

时间:2013-01-26 20:02:58

标签: c++ qt qt4 phonon

我对Qt比较陌生,所以我会解释这个问题以及我希望尽可能清楚地实现的目标。

目前我有一些按钮,当点击它们时,播放位于应用程序目录中的声音文件。 我做了一些研究,发现许多用户说使用Phonon比QSound更好。此应用程序仅适用于Windows平台,因此无需特殊操作。

这是我在mainwindow.cpp中的代码:

void MainWindow::on_obj_button_gandalf_clicked()
{
        Phonon::MediaObject *music =
        Phonon::createPlayer(Phonon::MusicCategory,Phonon::MediaSource("sound_file.mp3"));
        music->play();
}

声音播放完美。但是,如果用户必须再次点击该按钮,而声音仍然是从第一次点击播放,那么它将播放另一个。

是否有某种isplaying()函数或其他东西来判断相同的声音是否确实在播放?如果是这样,它不应该再播放,如果没有,它应该按要求播放歌曲。

我正在使用Qt 4.7.0 32位

1 个答案:

答案 0 :(得分:2)

阅读documentation,看起来就像调用music->state()和......检查状态一样简单。

if (music->state() == Phonon::PlayingState) {
    ...

您还会注意到有许多信号可以让您在应用程序中管理它,特别是stateChanged信号。