如何在 QML 的 .qrc 资源文件中指定通配符?

Posted

技术标签:

【中文标题】如何在 QML 的 .qrc 资源文件中指定通配符?【英文标题】:How to specify wildcards in .qrc resource file of QML? 【发布时间】:2015-01-14 07:19:54 【问题描述】:

一个目录中有 x 个 .png 文件。 我不想手动添加所有这些,而是​​想在 .qrc 文件中指定目录路径,并让它自己包含所有这些。

实现这一点的方法是什么?

【问题讨论】:

资源文件在运行时没有被填充,这意味着你不能只添加代码行来自动添加文件。但实际上,您只需选择文件即可一次添加多个文件。然而,之后将文件添加到所选路径需要您手动将文件添加到资源文件中。 【参考方案1】:

不,这还不可能,详情请参阅this bugreport。

【讨论】:

【参考方案2】:

这是一个从文件夹内容生成 qrc 文件的小 bash 脚本

#!/bin/sh
QRC=./resourcefilename.qrc
echo '<!DOCTYPE RCC>' > $QRC
echo '<RCC version="1.0">' >> $QRC
echo '  <qresource>' >> $QRC

# for each files/folder in the folder "theFokderName"
for a in $(find theFolderName -d)
do
    # if this is not a folder
    if [ ! -d "$a" ]; then
        echo '      <file>'$a'</file>' >> $QRC
    fi
done

echo '  </qresource>' >> $QRC
echo '</RCC>' >> $QRC

您可以轻松自定义它。

【讨论】:

【参考方案3】:

仅用于文档,我在 link 上找到了解决方法。

project.pro 中的以下条目可确保资源内置到应用程序二进制文件中,以便在需要时可用:

RESOURCES += \
    qml/main.qml \
    images/image1.png \
    images/image2.png

更方便的方法是使用通配符语法一次选择多个文件:

RESOURCES += \ 
    $$files(qml/ *.qml) \
    $$files(images/ *.png)

因此,如果您在 .pro 文件中使用 $$file(wildcard),它会起作用。我试过了,效果很好。

【讨论】:

【参考方案4】:

如果您使用的是 qmake,您可以简单地在项目文件中引用包含您的资产的文件夹:

RESOURCES += images/

无需使用脚本甚至 $$files() 帮助程序,除非您想通过文件扩展名进行 glob。

【讨论】:

以上是关于如何在 QML 的 .qrc 资源文件中指定通配符?的主要内容,如果未能解决你的问题,请参考以下文章

更改后,QT QML资源文件不会重新编译

如何使用 qmlRegisterType 在 QML 中指定 c++ 类型?

QML 错误“未知组件。(M300)”但代码有效

如何在 sonar-project.properties 中指定通配符

如何在 HTML5 缓存清单中指定通配符以加载目录中的所有图像?

为 iOS 编译 Qt 应用程序时使用 qml.qrc 发出警告