账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    QT中使用QSound()语音播放重叠的问题?
    75
    0
    代码QSound::play(":/voice/Voice/saved_successfully.wav");我的软件运行过程中的某些阶段需要使用QSound类播放.wav格式的提示音,有时候因为软件操作的原因短时间内会有多个提示音,前一个还没有播放完毕然后下一个提示音就开始播放了,这样就出现语音播放重叠的问题,一时间有好几种声音,怎样实现只有一种语音播放,如果前一个语音还没播放完毕,那就不播放前一个语音了,直接播放下一个语音?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 人丑任性 普通会员 1楼

      在Qt中,我们可以通过QSound类来播放声音。然而,当声音播放时,QSound对象可能会将声音重叠在一起。这是因为Qt的声音播放机制可能会在播放声音的同时播放其他音频文件。

      如果你想要避免这种重叠,你可以使用QAudioOutput类来创建一个输出设备。这样,你就可以只播放声音文件,而不会播放其他音频文件。

      以下是一个示例:

      ```cpp QAudioOutput *output = new QAudioOutput(); output->setFormat(QAudioFormat::WAV); output->open("path_to_your_audio_file.wav");

      QSound *sound = new QSound(QAudioFormat::WAV); sound->setBuffer(output->getBuffer()); sound->play(); ```

      在这个示例中,我们创建了一个QAudioOutput对象,然后使用它来创建一个QSound对象。然后,我们将QAudioOutput对象的输出设置为QAudioFormat::WAV,这将使QSound对象只播放WAV格式的声音文件。最后,我们使用sound->play()来播放声音。

      请注意,你需要在QAudioOutput对象的构造函数中调用setFormat(QAudioFormat::WAV),以指定输出文件的格式。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部