如果我在qml.qrc文件下的不同文件夹中有一堆资源(图像,字体等),有没有办法在Qt Creator中组织它?
例如,如果我在qml.qrc文件中有以下内容:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>pages/MainPage.qml</file>
<file>pages/NewContactPage.qml</file>
<file>images/plus.png</file>
<file>images/minus.png</file>
<file>images/exit.png</file>
</qresource>
</RCC>
它将在Qt Creator中显示为一个长列表,如下所示:
Resources
qml.qrc
/
main.qml
pages/MainPage.qml
pages/NewContactPage.qml
images/plus.png
images/minus.png
images/exit.png
由于这个列表在项目的持续时间内可能会非常长,如果这些列表更好地组织并分成像我们目录中的文件夹那样会很好。有什么想法吗?
答案 0 :(得分:5)
我刚刚发现了一种很棒的方法。奇怪的是,没有其他人建议它,当它如此完全无足轻重。也许它在Qt / Qt Creator的旧版本中没有用,但现在确实如此。
这是:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>test/test.txt</file>
</qresource>
</RCC>
test
目录需要存在且需要包含test.txt
。
无需使用不同的前缀创建单独的<qresource>
标记。不需要alias
属性。
文件在项目浏览器和的文件系统和中组织得很干净,您可以使用干净路径(例如:/test/test.txt
)从代码中访问它们。
(此屏幕截图是一个包含一些额外文件的项目 - 忽略这些文件)
加分:您可以右键点击&#34;测试&#34; Qt Creator中项目浏览器中的文件夹,然后选择&#34;添加新...&#34;,这会将新创建的文件放在文件系统中的正确位置。不幸的是,它并没有出现在项目浏览器的qrc子树中,只是出现在一个单独的&#34;其他文件&#34;子树。你需要右键点击&#34; qrc.qml&#34;在项目资源管理器中,选择&#34;添加现有文件&#34;使文件像qrc一样出现在qrc子树中。所以它有点儿麻烦/凌乱,但当你学会如何使用它时,它是可行的。
奖励2:您可以导入(添加)现有文件/目录(位于qrc文件的任何(子)子目录中)并生成正确的XML语法,在项目资源管理器中生成正确的树结构。
我认为效果不佳
File -> New file or project
(或Ctrl-N)从Qt Creator创建文件。这不允许您将文件放在文件系统中的任意目录中,只能放在根项目目录中。Ctrl+Shift+F
)中已放入子目录aren't included的文件。编辑:我刚注意到OP正在按照我的建议行事。在这种情况下,他可能正在使用较旧的Qt Creator版本。我的是4.1.0。
答案 1 :(得分:5)
实际上,我强烈建议将非.qml
资产放在不同的资源文件中,因为大文件will gut application build times。即使是对qml源的微小更改,也会导致重新编译整个资源文件。如果资产位于不同的资源文件中,则不会持续重新编译它们。
除了显着缩短构建时间外,这还可以有效地实现组织。
答案 2 :(得分:4)
如果您想使用qrc文件但不喜欢像“images / icons / images / icons / icon.png /”这样的路径,请使用here所述的别名
<qresource prefix="/images">
<file alias="cut.png">images/cut.png</file>
</qresource>
使用别名,您可以整齐地撰写/images/cut-img.png
代替/images/images/cut.png
答案 3 :(得分:2)
来自Qt文档:The Qt Resource System
默认情况下,可以在应用程序中使用与源树中相同的文件名访问资源,使用:/前缀,或使用带有qrc方案的URL。
还可以使用qresource标记的prefix属性为.qrc文件中的所有文件指定路径前缀:
此示例显示了如何执行此操作:
<RCC>
<qresource prefix="/pages">
<file >pages/MainPage.qml</file>
</qresource>
<qresource prefix="/images">
<file >images/plus.png</file>
</qresource>
</RCC>
答案 4 :(得分:2)
查看文件系统中显示的项目文件/文件夹的另一个好方法是执行此操作: