QML + .qrc:将图像保存在另一个前缀下

时间:2015-04-30 17:17:43

标签: qt qml

我的问题类似于another stackoverflow discussion中讨论的问题,我可以让我的代码以这种方式工作。但是,我对这个解决方案并不完全满意。最初,我将.qml文件放在一个前缀(" /")下,将我的图像放在另一个前缀下(" / images")。如果不放弃这种分离,我就不会让程序运行。

是否有任何(简单)方法在QML项目中使用.qrc资源文件中的不同前缀?

4 个答案:

答案 0 :(得分:2)

如果您想根据实际文件夹名称按前缀对文件进行分组而不延长引用名称,那么为什么不使用alias关键字?

<RCC>
<qresource prefix="/">
    <file>main.qml</file>
</qresource>
<qresource prefix="/images">
    <file alias="foo.png">images/foo.png</file>
</qresource>
</RCC>

这将删除导致混淆的额外间接,即您可以使用:/images/foo.png代替:/images/images/foo.png

来访问它

Qt文档中提供了解释和更多示例(搜索“别名”):http://doc.qt.io/qt-5/resources.html

答案 1 :(得分:1)

不应该问,我应该去喝咖啡或做一些运动。这是一个令人尴尬的初学者问题。不过,可能还有像我这样的人......

我的QtQuick应用程序主要由C ++源文件 main.cpp ,资源文件qml.qrc和图像 foo.png 组成。

源文件(显示的代码由QtCreator自动生成):

//main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
    return app.exec();
}

带有图像附加前缀的资源文件:

//qml.qrc
<RCC>
<qresource prefix="/">
    <file>main.qml</file>
</qresource>
<qresource prefix="/images">
    <file>images/foo.png</file>
</qresource>
</RCC>

我要导入图片的qml文件:

//main.qml
import QtQuick 2.2
import QtQuick.Window 2.0

Window {
    visible: true
    Image {
        source: ???
    }
}

我的问题是我不知道在.qml文件中写什么而不是 ??? 。要导入图形,您需要编写“/ images / images / foo.png”,但我的思绪反对两次编写 / images 的想法。

感谢。

答案 2 :(得分:0)

而不是???,你必须把路径&#34; qrc:/ images / images / foo.png&#34;

示例:

//main.qml
import QtQuick 2.2
import QtQuick.Window 2.0

Window {
    visible: true
    Image {
        source: "qrc:/images/images/foo.png"
    }
}

答案 3 :(得分:0)

在您的情况下,您可以在资源文件中定义文件,而不是将“images”两次写为源路径,如下所示:

<file alias="foo.png">images/foo.png</file>

然后您只能使用“图像”一次。

Window {
visible: true
Image {
    source: "qrc:/images/foo.png"
}

}

请参阅documentation