如何在 QML 中添加和使用资源?

Posted

技术标签:

【中文标题】如何在 QML 中添加和使用资源?【英文标题】:How to add and use a resource in QML? 【发布时间】:2013-10-29 18:13:59 【问题描述】:

我想在一个简单的 Qt 项目中使用 QtQuick Image 对象,并将图像包含在项目中。我已将图像添加到资源文件中。我使用调试来确保资源存在并作为“Resources/myfile.png”编译到应用程序中

但是,如果我声明一个 QtQuick 图像对象并将源设置为“Resource/myfile.png”,则找不到图像。相反,我收到一条消息:

QML Image: Cannot open: file:///C:/Users/me/Documents/QtCreator/build-myapp-Desktop_Qt_5_1_1_MinGW_32bit-Debug/qml/myapp/Resources/dial_bg.png

如果我尝试使用 C++ 方法访问文件,也会发生同样的情况

source: ":/Resources/dial_bg.png"

这让我在编译时出错。

myfile.png 尚未复制到该位置。 myfile.png 不会出现在项目文件中,尽管它已添加到资源文件中。

我会很高兴有一个解决方案可以将图像复制到图像想要提取它的位置,或者让 Image 访问“已编译”版本。

【问题讨论】:

【参考方案1】:

如果您使用的是 Qt Creator,您可以右键单击资源和 Copy Path,在我的例子中是这样的:

qrc:/Oscar.PNG

您不需要按照所选答案的建议直接引用资源目录。

例子:

【讨论】:

【参考方案2】:

QML中访问此类资源的方式如下:

source: "qrc:///Resources/dial_bg.png"

【讨论】:

这会从应用程序可执行文件的资源区域获取图像。您还必须将其添加到您的 qrc 文件中,以便将其构建到可执行文件中。【参考方案3】:

qml.qrc 文件

<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/">
    <file alias="main.qml">qml/main.qml</file>
</qresource>
<qresource prefix="/pics/">
    <file alias="bottom_arrow.png">pics/bottom_arrow.png</file>
</qresource>
</RCC>

在main.cpp文件中加载一个qml文件:

...
QString qml = QStringLiteral("qrc:///main.qml");
engine.load(QUrl(qml));
...

在 main.qml 文件中加载图片:

...
Image 
  source: "pics/ef-logo.png"

..

在QT中,它以某种方式对AUTORCC qrc文件进行编码。 但是如果你使用的是 Cmake 和 Visual Studio。然后在 Cmake 中你需要包含这个:

set(CMAKE_AUTOMOC ON)                   #must have for QML to work
set(CMAKE_AUTORCC ON)                   #for compiling qrc file to rcc
set(AUTORCC_OPTIONS "src/qml.qrc")

我希望这会有所帮助。这可能不是最好的方法,但仍然

【讨论】:

以上是关于如何在 QML 中添加和使用资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QML 中动画添加和删除元素到布局?

如何将 qml ScatterSeries 添加到现有的 qml 定义的 ChartView?

QML-如何在 ui.qml 中向 onClick 添加另一个命令?

如何将 Switch Qml 添加到 qt 小部件?

如何在 QML 中播放目录中的视频

Qt中使用QML和Listview的问题