![](/img/trans.png)
[英]QML image does not load image with non ASCII character in image source
[英]Can't load Image source in QML Image on Raspberry Pi
我正在使用 Qt Creator 交叉编译 Qt 项目,但出现以下错误:
qrc:/main.qml:26:25: QML Image: Cannot open: qrc:/images/imgA.png
目标设备上的目录结构是:
.
└── ProjectA/
└── bin/
└── res/
└── images/
├── imgA.png
└── imgB.png
Host PC上的目录结构为:
.
└── ProjectA/
├── ProjectA.pro
├── src/
│ └── All source Files
└── res/
├── main.qml
├── main.qrc
└── images/
├── imgA.png
└── imgB.png
当我在主机 PC 上编译和执行程序时,一切正常
编辑这是main.qrc:
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
<qresource prefix="/images">
<file alias="imgA" >images/imgA.png</file>
<file alias="imgB" >images/imgB.png</file>
</qresource>
</RCC>
主要的.qml:
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Layouts 1.3
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Image {
id: testImg
source: "images/images/imgA.png"
}
这是 qmake 项目文件:
QT += quick core network
CONFIG += c++17
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
INCLUDEPATH += src/
SOURCES += \
src/Property.cpp \
src/Weather.cpp \
src/main.cpp
RESOURCES += res/qml.qrc
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
install_config.path = /home/dietpi/QtProjects/$${TARGET}/bin/Data/
install_config.files = Data/*
INSTALLS += \
install_config \
# Default rules for deployment.
target.path = /home/dietpi/QtProjects/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
src/Property.hpp \
src/Weather.hpp
DISTFILES += \
res/main.qml \
这是为您截取的代码。
qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
<qresource prefix="/images">
<file alias="logo.jpg">images/logo.jpg</file>
</qresource>
</RCC>
这是一个main.qml
import QtQuick 2.14
import QtQuick.Window 2.14
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Image {
id : imgItem
anchors.fill: parent
source: "qrc:/images/logo.jpg"
}
}
即使在具有相同 Qt 安装的不同 PC 上,我也会遇到同样令人讨厌的问题。 当我为 qrc 文件中的每个前缀添加最后一个斜杠时,它工作正常:
<qresource prefix="/images/">
之后,我删除了缓存的 all.qrc 并重新编译,它工作正常。
如Qt 资源系统中所述,您应该使用qrc:///path
或:/path
。
似乎qrc:/path
在某些平台上不起作用。
更新:
由于您在.main.qrc
中使用qresource prefix
,因此您需要使用:/images/images/
图像文件的路径。 或将所有图像移动到父文件夹 ( res/
)。
查看您的资源文件,您正在使用别名。 这意味着您在引用它时必须使用别名。 所以尝试像这样访问它:
Image {
id: testImg
source: "qrc:/images/imgA" // Note, there is no '.png'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.