【问题标题】:How to add and use a resource in QML?如何在 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 访问“已编译”版本。

【问题讨论】:

    标签: image qt qml qtquick2


    【解决方案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")
      

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

      【讨论】:

        猜你喜欢
        • 2018-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-01
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多