QT不播放声音,如果它已经播放



我如何确保一个声音不开始播放,如果另一个声音已经在播放?

我使用下面的代码来播放声音:

void MainWindow::displayNotification(QString message)
{    
    // Play sound notification
    QSound *sound = new QSound("://2_1.wav", this);
    sound->play();
}

任何想法?

在主窗口中存储一个指向正在播放的QSound的指针,然后检查它是否已经用isFinished函数完成。

void MainWindow::MainWindow(QWidget* parent)
    : QMainWindow(parent)
{
    QString audiofile("://2_1.wav");
    m_pSound = new QSound(audiofile, this);
    if(!m_pSound)
    {
        qDebug() << "Failed to initialise sound file: " << audiofile;
    }
}
void MainWindow::displayNotification(QString message)
{    
    if(!m_pSound) // check m_pSound is initialised
        return;
    // check if sound is playing
    if(!m_pSound->isFinished)
        return;
    // Play sound notification        
    m_pSound->play();
}

注意m_pSound现在被声明为MainWindow的成员变量

类"QSound"具有"isFinished()"方法,因此

if(m_pSound->isFinished())
    //play
else
    //wait

相关内容

最新更新