如何在Qt Creator中的qml.qrc文件夹下组织文件?

时间:2014-11-19 14:22:09

标签: qt qml qt-creator

如果我在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

由于这个列表在项目的持续时间内可能会非常长,如果这些列表更好地组织并分成像我们目录中的文件夹那样会很好。有什么想法吗?

5 个答案:

答案 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)从代码中访问它们。

screenshot

(此屏幕截图是一个包含一些额外文件的项目 - 忽略这些文件)

加分:您可以右键点击&#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创建文件。这不允许您将文件放在文件系统中的任意目录中,只能放在根项目目录中。
  • 您在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)

查看文件系统中显示的项目文件/文件夹的另一个好方法是执行此操作:

  • 打开您的项目
  • 点击项目名称上方的下拉菜单,如下图所示:

enter image description here

  • 完成,现在您可以看到FS上显示的文件和文件夹