当使用QAudioOutput播放音频数据时,需要根据播放的状态来设置UI或者其它操作。
先看看QAudioOutput解释:
At any given time, the QAudioOutput will be in one of four states: active, suspended, stopped, or idle. These states are described by the QAudio::State enum. State changes are reported through the stateChanged() signal. You can use this signal to, for instance, update the GUI of the application; the mundane example here being changing the state of a play/pause button. You request a state change directly with suspend(), stop(), reset(), resume(), and start().
解释中说播放状态包括:active, suspended, stopped, or idle.活动、暂停、停止和空闲
状态值:QAudio::ActiveState、QAudio::SuspendedState、QAudio::StoppedState、QAudio::IdleState
使用信号和槽,通过stateChanged()信号获得当前播放状态
1、头文件添加槽函数
void State(QAudio::State state);
2、创建QAudioOutput后就加上信号和槽
QAudioOutput audio = new QAudioOutput(QAudioFormat的配置,this);
connect(audio, SIGNAL(stateChanged(QAudio::State)), this, SLOT(State(QAudio::State)));
3、编写槽函数
void Core::State(QAudio::State state)
{
switch(state)
{
case QAudio::ActiveState:
QMessageBox::question(this, tr("提示"), tr("活动状态"), QMessageBox::Ok, QMessageBox::Ok);
break;
case QAudio::SuspendedState:
QMessageBox::question(this, tr("提示"), tr("暂停状态"), QMessageBox::Ok, QMessageBox::Ok);
break;
case QAudio::StoppedState:
QMessageBox::question(this, tr("提示"), tr("停止状态"), QMessageBox::Ok, QMessageBox::Ok);
break;
case QAudio::IdleState:
QMessageBox::question(this, tr("提示"), tr("空闲状态"), QMessageBox::Ok, QMessageBox::Ok);
break;
}
}
根据提示就可以知道QAudioOutput的播放状态了