9

我想在一个简单的 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 访问“已编译”版本。

4

3 回答 3

7

如果您使用的是 Qt Creator,您可以右键单击该资源Copy Path,在我的情况下它给了我:

qrc:/Oscar.PNG

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

例子:

复制资源路径示例

于 2020-06-22T21:15:41.143 回答
6

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

source: "qrc:///Resources/dial_bg.png"
于 2013-10-29T18:34:10.653 回答
2

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")

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

于 2017-01-13T10:05:56.050 回答