有没有办法检查是否QSound::play()
成功?这意味着,找到了文件,它的格式有效,并且 QSound 设法开始播放它。
这一点尤其重要,因为 QSound 无法播放所有类型的格式、采样率等。
一个技巧是启动声音,并在很短的延迟检查之后isFinished()
,但它只适用于循环声音。
有没有更好的办法?
似乎没有任何方法可以检查 QSound。Qt 文档状态:
QSound 类提供了播放.wav的方法声音文件的方法
所以格式必须是.wav,但我认为如果它无效,它就不会播放。
但是,您可以尝试改用 QSoundEffect 类。您使用 QUrl 路径设置源,然后您可以调用函数 status() 以查看它是否正确加载。如果格式不正确,这可能会返回错误,但是您必须尝试一下。
如果还是不行,那就有QMediaPlayer,虽然它开始播放可能没有QSoundEffect那么快,但是会报各种错误,比如FormatError、ResourceError、NetworkError等。