如何替换QML(QT)文件上的图像中的图像中没有资源中的图像

How to replace an image on QML (Qt) file by an other image do not have in Resource

本文关键字:图像 资源 QT 何替换 替换 QML 文件      更新时间:2023-10-16

我有一个qml文件,在其中按钮上设计了一个图像。

菜单.qml

(...)
ToolButton {
  Image {
    (...)
    Image {
      id: img1
      source: "qrc:/Images/img_1.png" 
    }
  }  
}

现在我想要,如果我在文件夹中有一张图片c:/images/,例如 c:/pic/img_2.png ,加载成功菜单>菜单>菜单> qml ,它会自动替换img_2.png(不在资源中(的img_1.png(在资源中(。

有人可以帮我吗?
(对不起,我的英语不好(

Image允许用户使用JavaScript代码在运行时更改图像源。因此,每当您想更改图像时,都可以将新的源URL分配给img1.source

image.source = 'file:/c:/Pic/img_2.png';

请注意,对于本地文件,您应该使用file:协议方案。

如果我理解了您的问题,则可以通过附加到信号Component.onCompleted

来更改属性。
(...)
ToolButton {
  Image {
    (...)
    Image {
      id: img1
      source: "qrc:/Images/img_1.png" 
      Component.onCompleted: {
        source = "file://C:/Pic/img_2.png"
      }
    }
  }  
}

使用QT Resource System管理资源文件

... QML中相对路径指定的所有文件将从资源系统中加载。资源系统的使用与QML层完全透明。这意味着所有QML代码均应使用相对路径参考资源文件,并且不应使用QRC方案。该方案仅应从C 代码中用于参考资源文件。

因此,加载图像外部资源文件所需要做的就是使用其绝对路径。