-2

我对 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 32bit

4

1 回答 1

2

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

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

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

于 2013-01-26T20:06:59.657 回答