如果QT已经播放,QT不播放声音吗?

时间:2014-05-01 22:49:13

标签: qt

如果另一个声音已播放,我如何确保声音无法开始播放?

我使用以下代码播放声音:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在MainWindow中存储指向播放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的成员变量。

答案 1 :(得分:0)

出于这个原因,类“ QSound”具有方法“ isFinished()”。

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