2

如果发出信号,我想播放 wav 文件。为了测试,我创建了一个按钮并用它填充了它的插槽

QSoundEffect alarm;
alarm.setSource(QUrl::fromLocalFile("001.wav"));
alarm.setLoopCount(QSoundEffect::Infinite);
alarm.setVolume(1.0f);
alarm.play();

但是如果我点击按钮没有声音。搜索后,我发现人们对 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

4 回答 4

0

是的,它是越野车。

我建议您使用另一个音频转换器。

我使用了这个网站,后来它工作了。

http://www.online-convert.com

于 2013-10-23T18:51:01.310 回答
0

您的 QSoundEffect 需要父母才能正常工作,实际上它仅在您打开消息框时才有效,因为它将把它作为父母。

于 2014-11-15T21:55:32.107 回答
0

如果你在 Mac OS X 下你可以试试这个:QT5 QSound does not play all wave files

但是这个bug已经被报告了,应该会在 Qt 5.1.1 中修复,所以请耐心等待。

于 2013-07-15T09:06:15.370 回答
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();
}
于 2016-04-29T12:08:14.113 回答