如何在c ++项目中访问Qt的资源文件?

雅鲁科

我已将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播放?我知道的唯一方法是将其作为文件在系统上播放,但这不是我所需要的。

费利克斯

您不能直接使用资源文件,因为只有QFileQt-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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Play框架项目中使用相对路径访问资源文件?

如何从多个项目访问公共资源文件

我应该如何在Maven管理的Java项目中发现测试资源文件?

如何在同步或构建期间将资源文件从其他目录复制到Android项目中?

在没有Qt项目的情况下如何在Visual Studio中使用Qt资源文件?

如何在项目中打开源文件?

如何访问Xcode中的资源文件?

如何在项目中访问本地文件

如何在NativeScript项目中从JS访问Android颜色资源?

如何在一个 CLion 项目中运行多个 C++ 源文件?

如何最好地从资源文件夹访问文件

如何根据构建配置从项目中包含/排除源文件?

从同一解决方案 C# 的另一个项目访问资源文件

如何在C#中读取资源文件

如何访问Netbeans(Java)中的资源文件?

如何在我的项目中访问js文件?

如何在Visual C ++项目中定义和加载资源?

如何在Spring Boot中访问src / main / resources /文件夹中的资源文件

如何使用Gradle访问Java项目中的资源?

如何在单个Eclipse项目中设置多个源文件夹?

如何在 Android 库项目中按测试类型分隔源文件?

如何在Qt上更改资源文件的所有路径?

如何访问我的 Maven Web 服务项目中资源目录中的文件?

如何在Fluid Typo3中访问页面的资源文件

如何读取项目文件夹下的资源,而不是源文件夹下的资源

如何从Maven项目中的资源映射中获取文件

在Mac Qt项目中找不到“ fbxsdk.h”文件,如何在Mac Qt项目中添加FBX SDK?

如何将资源文件从C ++项目构建/复制到“调试目标路径”?

如何在C#项目中使用LIB文件?