我已将Alert.wav声音文件添加到.qrc文件。然后,我使该项目生成一个VS项目。
我实际上可以在解决方案资源管理器中看到alert.wav文件。现在的问题是使用Windows的默认API播放alert.wav文件。
我已经试过了:
PlaySound(L"alert.wav", NULL, SND_RESOURCE | SND_ASYNC | SND_NOSTOP);
还有这个:
PlaySound(L":files/sound/alert.wav", NULL, SND_RESOURCE | SND_ASYNC | SND_NOSTOP);
但是它们都不起作用,我实际上可以通过传递“:files / sound / alert.wav”来播放QSound。如何通过PlaySound播放?我知道的唯一方法是将其作为文件在系统上播放,但这不是我所需要的。
您不能直接使用资源文件,因为只有QFile
Qt-Classes知道这些资源。要播放,您需要创建一个本地副本:
QString path = QDir::temp().absoluteFilePath("alert_tmp.wav");//a path in the temporary folder
QFile::copy(":files/sound/alert.wav", path);//Will return true if copied, false if the target already exists
PlaySound((wchar_t*)path.utf16(), NULL, SND_RESOURCE | SND_ASYNC | SND_NOSTOP);
请注意,您在临时文件夹中可能有冲突。您可以使用自定义子目录来避免这种情况。
这种方法的有用之处在于,只有在临时文件夹中尚不存在该文件时,该文件才会被复制;如果用户删除了所有临时文件,则该文件将仅被复制一次。
提示:
如果您只想播放声音,QSound
可能对您有用。它也暂时不支持资源,但可能更易于使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句