我如何确保一个声音不开始播放,如果另一个声音已经在播放?
我使用下面的代码来播放声音:
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