如果发出信号,我想播放一个wav文件。为了测试我创建了一个pushButton并用
填充其插槽QSoundEffect alarm;
alarm.setSource(QUrl::fromLocalFile("001.wav"));
alarm.setLoopCount(QSoundEffect::Infinite);
alarm.setVolume(1.0f);
alarm.play();
但是如果我点击pushButton就没有声音了。搜索后我发现人们在Qt5上遇到了同样的问题但没有解决方案。
使用Qt5的最佳和最简单的解决方案是播放未压缩的声音文件(wav)并更改其音量?
编辑:我发现如果我添加例如它可以工作一个QMessageBox(当此消息框打开时):
QSoundEffect alarm;
alarm.setSource(QUrl::fromLocalFile("001.wav"));
alarm.setLoopCount(2);
alarm.setVolume(0.5f);
alarm.play();
QMessageBox::information(this, "test", "it works");
有没有人解释这种行为?
答案 0 :(得分:0)
如果您使用的是Mac OS X,则可以尝试:QT5 QSound does not play all wave files
但bug已被报道,应该在Qt 5.1.1中修复,所以请耐心等待。
答案 1 :(得分:0)
答案 2 :(得分:0)
您的QSoundEffect需要父级才能正常工作,实际上只有在您打开消息框时它才有效,因为它会将其作为父级。
答案 3 :(得分:0)
声音需要编写事件循环,例如:
void MainWindow::on_pushButton_4_clicked()
{
QSoundEffect beep;
beep.setSource(QUrl("qrc:/sound/beep-02.wav"));
beep.setVolume(1.0f);
beep.play();
QEventLoop loop;
loop.exec();
}