Russian Qt Forum

Qt => Мультимедиа => Тема начата: Evil_Genius от Июнь 11, 2015, 10:54



Название: Проигрывание через QAudioOutput и корректное завершение программы
Отправлено: Evil_Genius от Июнь 11, 2015, 10:54
Вычитал в интернете, что проигрывать звук через 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()), то она не завершится корректно, а останется "висеть". Как можно этого избежать?


Название: Re: Проигрывание через QAudioOutput и корректное завершение программы
Отправлено: Hellraiser от Июнь 11, 2015, 11:12
Обрабатывать closeEvent у главного окна приложения. В нем эмитить свой сигнал, ранее соединенный с quit() loop`a. И менять состояние плеера (player->stop()).


Название: Re: Проигрывание через QAudioOutput и корректное завершение программы
Отправлено: Evil_Genius от Июнь 11, 2015, 21:38
Обрабатывать closeEvent у главного окна приложения. В нем эмитить свой сигнал, ранее соединенный с quit() loop`a. И менять состояние плеера (player->stop()).
Пробовал подобное, но без смены состояния плеера - эффект был нулевой. Попробовал то, что предложили вы - сработало. Спасибо за помощь.