有没有一种方法可以简化qresource文件描述符?

时间:2018-09-20 14:39:34

标签: qt qml

我目前有一个qml.qrc文件,如下所示:

<RCC>
    <qresource prefix="/qml">
        <file>qml/components/Icon.js</file>
        <file>qml/components/IconButton.qml</file>
        <file>qml/components/IconLabel.qml</file>
        <file>qml/main.qml</file>
        <file>qml/setup/NewProject.qml</file>
        <file>qml/setup/Setup.qml</file>
        <file>qml/setup/Startup.qml</file>
        <file>qml/workspace/AnimationWindow.qml</file>
        <file>qml/workspace/DepthChartControls.qml</file>
        <file>qml/workspace/NewAnimationWindow.qml</file>
        <file>qml/workspace/TraceWindow.qml</file>
        <file>qml/workspace/Workspace.qml</file>
        <file>qml/workspace/WorkspaceMenuBar.qml</file>
        <file>qml/Empty.qml</file>
        <file>qml/qmldir</file>
        <file>qml/Style.qml</file>
        <file>icons/play.svg</file>
    </qresource>
    <qresource prefix="/icons">
        <file>lib/material-design/icons/svg/play.svg</file>
    </qresource>
</RCC>

这样做的原因是,我必须引用qml文件,例如:engine.load(QUrl("qrc:/qml/qml/main.qml")),并且当我要访问图标时,必须指定:/icons/lib/material-design/icons/svg/play.svg。是否可以通过将qresources限制为带前缀的目录路径来简化路径?

1 个答案:

答案 0 :(得分:3)

这已经是您想要的方式。您可以通过以下方式访问文件

qrc:/qml/Icon.js
qrc:/icons/play.svg

通常它的工作方式如下:给定

<qresource prefix="PREFIX">
<file alias="ALIAS">QRC_RELATIVE_FILEPATH</file>
</qresource>

通过以下方式访问资源

qrc:PREFIX/ALIAS

ALIAS的默认值是QRC_RELATIVE_FILEPATH中的文件名(并且只有文件名)-也就是说,示例中使用路径元素是多余的,但受支持。