Вычитал в интернете, что проигрывать звук через QAudioOutput надо с использованием QEventLoop:
QAudioOutput * player;
...
QBuffer buffer(&sound);
buffer.open(QIODevice::ReadOnly);
player->start(&buffer);
QEventLoop loop;
QObject::connect(player, SIGNAL(stateChanged(QAudio::State)), &loop, SLOT(quit()));
do{
loop.exec();
}while(player->state() == QAudio::ActiveState);
buffer.close();
Однако если в момент проигрывания завершить программу (
QApplication::quit()), то она не завершится корректно, а останется "висеть". Как можно этого избежать?