如何检查发声器声音是否已经在播放

How to check if Phonon sound is already playing?

本文关键字:是否 声音 播放 何检查 检查      更新时间:2023-10-16

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

目前,我有按钮,单击时可以播放位于应用程序目录中的声音文件。我做了一些研究,发现很多用户说使用Phonon比QSound更好。此应用程序仅适用于Windows平台,因此不需要任何特殊功能。

这是我在主窗口中的代码.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位

阅读文档,似乎就像调用music->state()和...检查状态。

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

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