微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在Raspberry Pi上的QML图像中加载图像源

如何解决无法在Raspberry Pi上的QML图像中加载图像源

我正在使用Qt Creator交叉编译Qt项目,但出现以下错误

qrc:/main.qml:26:25: QML Image: Cannot open: qrc:/images/imgA.png

目标设备上的目录结构为:

.
└── ProjectA/
    └── bin/
        └── res/
            └── images/
                ├── imgA.png
                └── imgB.png

主机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>

main.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/">

之后,我删除了所有缓存的 .qrc 并重新编译,它工作正常。

,

The Qt Resource System中所述,您应使用submitqrc:///path

似乎:/path在某些平台上不起作用。

更新

由于您在qrc:/path中使用qresource prefix,因此需要使用.main.qrc路径访问图像文件。或将所有图像移到父文件夹(:/images/images/)。

,

查看您的资源文件,您正在使用别名。这意味着在引用别名时必须使用别名。因此,尝试像这样访问它:

    Image {
        id: testImg
        source: "qrc:/images/imgA"    // Note,there is no '.png'
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。