Russian Qt Forum
Июнь 15, 2024, 23:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проигрывание через QAudioOutput и корректное завершение программы  (Прочитано 3238 раз)
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()), то она не завершится корректно, а останется "висеть". Как можно этого избежать?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #1 : Июнь 11, 2015, 11:12 »

Обрабатывать closeEvent у главного окна приложения. В нем эмитить свой сигнал, ранее соединенный с quit() loop`a. И менять состояние плеера (player->stop()).
« Последнее редактирование: Июнь 11, 2015, 11:14 от Hellraiser » Записан
Evil_Genius
Гость
« Ответ #2 : Июнь 11, 2015, 21:38 »

Обрабатывать closeEvent у главного окна приложения. В нем эмитить свой сигнал, ранее соединенный с quit() loop`a. И менять состояние плеера (player->stop()).
Пробовал подобное, но без смены состояния плеера - эффект был нулевой. Попробовал то, что предложили вы - сработало. Спасибо за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.