在Qt5.0.2中没有QSoundEffect的声音输出

时间:2013-07-14 10:43:58

标签: qt qt5

如果发出信号,我想播放一个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");

有没有人解释这种行为?

4 个答案:

答案 0 :(得分:0)

如果您使用的是Mac OS X,则可以尝试:QT5 QSound does not play all wave files

bug已被报道,应该在Qt 5.1.1中修复,所以请耐心等待。

答案 1 :(得分:0)

是的,这很麻烦。

我建议您使用其他音频转换器。

我使用过这个网站,之后就开始工作了。

http://www.online-convert.com

答案 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();
}