QML 不能多次打开图像

Posted

技术标签:

【中文标题】QML 不能多次打开图像【英文标题】:QML cannot open an image more than once 【发布时间】:2016-01-05 19:55:09 【问题描述】:

在我的一个 QML 页面中,有 1 个后退按钮和一个列表视图,每行包含一个图像和一个文本。我对后退按钮和列表视图行项目都使用了测试图像。后退按钮可以显示图像,但列表视图抱怨“QML 图像:无法打开:qrc:/../../../Users/Jerry/Desktop/LA.png”。

图像和所有 QML 文件都在资源下。这是代码。

import QtQuick 2.0
import QtQuick.Controls 1.2

Rectangle 
anchors.fill: parent

Item 
    id: advancedBackground
    anchors.fill: parent

    Button 
        id: backButton
        width: 25
        height: 25
        anchors.top: parent.top
        anchors.topMargin: 25
        anchors.left: parent.left
        anchors.leftMargin: 25
        opacity: backMouseArea.containsMouse ? 0.9 : 0.1
        MouseArea 
            id: backMouseArea
            anchors.fill: parent
            hoverEnabled: true
            onClicked: 
                leftArrow.visible = true;
                rightArrow.visible = false;
                stackView.pop();
            
        
        Image 
            anchors.fill: parent
            fillMode: Image.PreserveAspectFit
            // image works fine here
            source: "qrc:/../../../Users/Jerry/Desktop/LA.png"
        
    

    ListView
        id: listView
        anchors.rightMargin: 40
        anchors.leftMargin: 40
        anchors.bottomMargin: 30
        anchors.topMargin: 90
        anchors.fill: parent

        delegate: Item 
            x: 5
            width: parent.height
            height: 40

            Image 
                height: parent.height; width: parent.height
                anchors.left: parent.left
                fillMode: Image.PreserveAspectFit
                source: imageSource
            

            Text 
                text: name
                height: parent.height
                width: parent.width
                anchors.left: parent.left
                anchors.leftMargin: 50
                anchors.centerIn: parent
                font.bold: true
                anchors.horizontalCenter: parent.horizontalCenter
            
        
        model: ListModel 
            ListElement 
                name: "test1"
                // image doesn't work here
                imageSource: "qrc:/../../../Users/Jerry/Desktop/LA.png"
            

            ListElement 
                name: "test2"
                // image doesn't work here
                imageSource: "qrc:/../../../Users/Jerry/Desktop/LA.png"
            
        
    

在资源下,它包括 AdvancedPages.qml 和 ../../../Users/Jerry/Desktop/LA.png

【问题讨论】:

我的意思是路径应该像qrc:/images/LA.png。试试看,我们会看看这是否是问题所在。 有效!你能解释一下它为什么起作用吗? 【参考方案1】:

我认为您应该摆脱图像的相对路径。路径应该类似于qrc:/images/LA.png

【讨论】:

您能解释一下原因吗?谢谢 @Jerry 答案仅基于我的经验

以上是关于QML 不能多次打开图像的主要内容,如果未能解决你的问题,请参考以下文章

centos系统怎么设置文本的打开方式

如何在 WPF 中多次旋转图像

从另一个 QML 文件打开新的 QML 文件

linux 串口设备能否被多次打开

QT/QML 从主窗口重新打开新窗口

Xamarin 表单:GestureRecognizers 对点击响应不佳,需要多次点击才能打开页面