我需要使用来自几个不同程序(图像,字体,txt文件等)的一组资源。所以我把它们放在一个普通文件夹中。因此,我尝试使用此路径读取以下txt文件之一:
":/../../CommonClasses/PNGWriter/report_text/English"
但是,这不能正常工作,因为无法打开QFile来读取此路径。
但是,如果我将report_text目录移动到源目录并使用此路径,则为
":/report_text/English"
然后一切正常。
所以我的问题是,用户资源是否可能不在源目录中?
编辑:
这是我的.qrc源文件(我用资源文件中的实际文件替换了stuff.txt)
<RCC>
<qresource prefix="/">
<file>../../CommonClasses/PNGWriter/report_text/English</file>
<file>../../CommonClasses/PNGWriter/report_text/GothamBlackRegular.otf</file>
<file>../../CommonClasses/PNGWriter/report_text/GothamBold.otf</file>
<file>../../CommonClasses/PNGWriter/report_text/GothamBook.otf</file>
<file>../../CommonClasses/PNGWriter/report_text/GothamLight.otf</file>
<file>../../CommonClasses/PNGWriter/report_text/GothamMedium.otf</file>
<file>../../CommonClasses/PNGWriter/report_text/Spanish</file>
<file>../../CommonClasses/PNGWriter/report_text/viewmind.png</file>
</qresource>
</RCC>
答案 0 :(得分:1)
alias
关键字对于在资源系统中给事物起一个不同的名称很有用。
代替
<file>../../CommonClasses/PNGWriter/report_text/viewmind.png</file>
你会写
<file alias="report_text/viewmind.png">../../CommonClasses/PNGWriter/report_text/viewmind.png</file>
当然,如果您手动维护大型qrc文件,这会有些麻烦;自动化它们的(脚本)生产可能会有用。
答案 1 :(得分:0)
我不认为这是一个本机选项,因为当我尝试在项目子目录上方添加文件时,我会使用复制选项得到"The file "/path/to/file/" is not in a subdirectory of the resource file. You now have the option to copy this file to a valid location."
。
但是,(如果在Linux上)在项目子目录中的资源文件中添加符号链接对我来说效果很好。因此,类似ln -s /path/to/target/resource /path/to/project/directory/resource_name.file
的东西,然后将resource_name.file添加到资源文件中应该可以工作。它是在我的(Qt 5.7)上实现的。
答案 2 :(得分:0)
感谢友善的小贴士@timday,我设法看到了问题所在。我使用的../../
是问题所在。该文件的路径实际上是:
:/CommonClasses/PNGWriter/report_text/English
现在它可以按预期运行!!我希望这对其他人有帮助!