如果另一个声音已播放,我如何确保声音无法开始播放?
我使用以下代码播放声音:
void MainWindow::displayNotification(QString message)
{
// Play sound notification
QSound *sound = new QSound("://2_1.wav", this);
sound->play();
}
有什么想法吗?
答案 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