Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何在QML中添加和使用资源?_Image_Qt_Qml_Qtquick2 - Fatal编程技术网

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

Image 如何在QML中添加和使用资源?,image,qt,qml,qtquick2,Image,Qt,Qml,Qtquick2,我想在一个简单的Qt项目中使用一个QtQuick图像对象,并将该图像包含在项目中。我已将图像添加到资源文件中。我使用了调试来确保资源存在,并以“Resources/myfile.png”的形式编译到应用程序中 但是,如果我声明一个QtQuick图像对象并将源设置为“Resource/myfile.png”,则找不到图像。相反,我得到了一个信息: QML Image: Cannot open: file:///C:/Users/me/Documents/QtCreator/build-myapp-

我想在一个简单的Qt项目中使用一个QtQuick图像对象,并将该图像包含在项目中。我已将图像添加到资源文件中。我使用了调试来确保资源存在,并以“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不会出现在项目文件中,尽管它已添加到资源文件中


我很乐意使用一种解决方案,将图像复制到图像要拾取的位置,或者使用一种方法让图像访问“编译版本”。

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

source: "qrc:///Resources/dial_bg.png"
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.qml文件中加载图像:

...
Image {
  source: "pics/ef-logo.png"
}
..
在QT中,它以某种方式自动抄送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")

我希望这会有所帮助。这可能不是最好的方法,但如果您使用的是Qt Creator,您可以右键单击资源并复制路径,在我的情况下,它会给出:

qrc:/Oscar.PNG
您不需要按照所选答案的建议直接引用资源目录

例如:


这将从应用程序可执行文件的资源区域获取映像。您还必须将其添加到qrc文件中,以便将其内置到可执行文件中。
qrc:/Oscar.PNG