QML的Image 路径问题(source)

四种路径格式

在 QML 中,当你使用 Image 元素的 source 属性来指定一个图片的路径时,有几种不同的方式可以指定这个路径,每种方式都有其特定的用途和上下文

  1. 相对路径: QML 文件和一个名为 close.png 的图片在同一目录下,直接使用 source: “close.png”。QML 会相对于 QML 文件的路径来查找这个图片。

  2. 绝对路径:知道图片的确切位置,你可以使用绝对路径。但是,这通常不推荐,因为这会使 QML 文件更难以移植和重用。

  3. 资源路径 :使用 Qt 的资源系统(.qrc 文件),可以将图片添加到资源文件中,并在 QML 中通过资源路径引用它。这通常看起来像这样:source: “qrc:/images/close.png”,其中 images 是 .qrc 文件中定义的资源前缀,close.png 是图片文件名。

  4. URL 格式:QML 也支持使用 URL 格式来指定路径。这通常需要引用网络上的图片或使用特定协议(如 file://)时很有用。

常见做法

  • 图片与 QML 文件在同一目录下,只需使用 source: “close.png”。
  • 图片在 QML 文件的子目录中,使用相对路径,如 source: “images/close.png”(假设图片在名为 images 的子目录中)。
  • 使用 Qt 的资源系统,并将图片添加到 .qrc 文件中。这样, QML 文件将更易于移植和重用,因为图片将嵌入到应用程序的可执行文件中。

下面按照项目类型做简单展示

开源项目

对于开源项目来说,一般使用资源路径。这种方法的本质是使用QtDeclarative模块动态载入,优势是便于修改。
以一个控件为例:

Image {
             id: closeIcon
             width:25
             height:25
             anchors.right: parent.right
             anchors.top: parent.top
             source: "icon/close.png"
             // 添加一个MouseArea来处理点击事件
             MouseArea {
                 id: closeArea
                 anchors.fill: parent
                 onClicked: {
                     login.close()
                 }
             }
         }

此时资源路径通过右键可以轻易获取到
在这里插入图片描述

商业项目(混淆源码)

一般会使用资源路径,本质是将QML文件加入到Qt资源系统中,编译成二进制文件供QtDeclarative模块使用。我查阅的资料显示使用相对路径、绝对路径也可以,但是在Windows或者Linux操作系统中,我经常会遇到这样的报错:
在这里插入图片描述
在已经保证编码格式正确的条件下,这种路径是读不到的,深入分析错误原因,发现问题出在资源解析上,因此还是推荐使用资源路径:

"file://icon/close.png"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/647707.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

比较两列数据

点其中一个数据 删掉S,回车 大的标红

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…

基于springboot的毕业设计系统的开发源码

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的毕业设计系统的开发。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 毕业设计系统能够实现…

Git Core Lecture

1、Git 简介 官方介绍:Git is a fast distributed revision control system (Git 是一个快速的分布式版本控制系统) 2、Git Core Command 2.1 git init git 工程初始化,会在工作区 (working directory) 根目录中创建.git 目录 # 创建目录 $ mkdir git-i…

智能合约语言(eDSL)—— 并行化方案 2

这个并行算法最初其实是在aptos上实现的,aptos上使用的是move虚拟机,后来我把它移植到我们链上了,但是wasm虚拟机。还是费了不少事情。 目前evm并行也比较火,像monad,sei等。经过调研发现,其实evm的并行&am…

Python 获取当前IP地址(爬虫代理)

Python 获取当前IP地址(爬虫代理) 在Python中,获取当前的公网IP地址通常涉及到发送一个请求到外部服务,因为本地IP地址通常只在你的私有网络内部是可见的,而公网IP地址是由你的ISP(互联网服务提供商&#x…

如何查看哪些组策略应用于你的电脑和用户帐户?这里有详细步骤

如果你希望在电脑上查看所有有效的组策略设置,以下是操作方法。 什么是Windows中的组策略 在Windows世界中,组策略为网络管理员提供了一种将特定设置分配给用户组或计算机组的方法。然后,无论何时组中的用户登录到联网的PC,或无论何时启动组中的PC,都会应用这些设置。 …

牛客NC222 插入区间【中等 数组,区间合并问题 Java/Go/PHP/C++】lintcode30 插入区间

题目 题目链接: https://www.nowcoder.com/practice/1d784b5472ab4dde88ea2331d16ee909 https://www.lintcode.com/problem/30/solution/56586 思路 Java代码 import java.util.*;/** public class Interval {* int start;* int end;* public Interval(int …

python web自动化(分布式测试Grid)

Grid介绍 Selenium Grid 是 Selenium 提供的⼀个⼯具,⽤于⽀持在多台计算机上并⾏运⾏测试。 它允许将测试分发到不同的机器和浏览器组合上,同时收集结果。 1.并⾏执⾏测试⽤例:在不同的机器上并⾏执⾏测试⽤例,从⽽加速整个测试过…

详细分析Element Plus中的ElMessageBox弹窗用法(附Demo及模版)

目录 前言1. 基本知识2. Demo3. 实战4. 模版 前言 由于需要在登录时,附上一些用户说明书的弹窗 对于ElMessageBox的基本知识详细了解 可通过官网了解基本的语法知识ElMessageBox官网基本知识 1. 基本知识 Element Plus 是一个基于 Vue 3 的组件库,其中…

初识C语言——第二十四天

函数的基本使用和递归 1.函数是什么 2.库函数 3.自定义函数 4.函数参数 5.函数调用 6.函数的嵌套调用和链式访问 7.函数的声明和定义 函数是什么 C语言中函数的分类 1.库函数 2.自定义函数 库函数: 简单的总结,C语言常用的库函数都有: #includ…

QT之常用控件

一个图形化界面当然需要有各种各样的控件,QT也不例外,在QT designer中就有提供各种各样的控件,用以开发图形化界面。 而想使用好一个QT控件,就需要了解这些控件。 QWidget 在QT中,所有控件都继承自 QWidget 类&…

Docker学习(4):部署web项目

一、部署vue项目 在home目录下创建项目目录 将打包好的vue项目放入该目录下,dist是打包好的vue项目 在项目目录下,编辑default.conf 内容如下: server {listen 80;server_name localhost; # 修改为docker服务宿主机的iplocation / {r…

24法考证件照要求|不合格原因汇总!

6月法考报名,大家一定要提前熟悉下电子证件照片要求‼️ ⚠️证件照注意事项 ▪️不得上传全身照、风景照、生活照、背带(吊带)衫照、艺术照、侧面照、不规则手机照等。 ▪️本人近三个月内彩色(红、蓝、白底色均可)正面免冠电子证件照片,照片必须清晰完…

人工智能为犯罪地下世界带来了巨大的生产力提升

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

MySQL--执行计划

一、执行计划 1.介绍 执行计划是sql在执行时,优化器优化后,选择的cost最低的方案 通过desc、explain可以查看sql的执行计划 2.如何查看执行计划 table语句操作的表,在多表时才有意义type查找类型possible_keys可能会用到的索引key最终选择的…

python ofd转pdf及图片

本文部分内容参考,如有侵权请联系删除:使用 easyofd 解析ofd 文件_python模块easyofd如何使用-CSDN博客 背景需求:需要将邮箱中得ofd格式发票提取出来转换成pdf或者图片。 在网上搜了发现使用pyofd包,安装之后使用各种问题&…

VXLAN小结

1.VXLAN:(组件虚拟网络的架构核心)虚拟扩展本地局域网,通过隧道的形式,将物理上有隔离的资源,在逻辑上连通起来,使其二层互通。 a.物理网络:指的是构成 VXLAN 连接的基础 IP 网络 b.逻辑网络:指的是通过 VXLAN 构建的虚拟网络 C.N…

腾讯Java社招面试题真题,最新面试题

Java中synchronized和ReentrantLock有什么区别? 1、锁的实现方式不同: synchronized是JVM层面的锁,主要依赖于监视器对象(monitor)实现。ReentrantLock是JDK层面的锁,通过Java代码实现,提供了更…

docker 上面安装 Nginx 以及设置访问 IP 就可以访问前端工程

docker 运行 Nginx 第一步:搜索下镜像 首先可以使用 docker search nginx 搜索 nginx 服务 docker search nginx相关控制台输出: NAME DESCRIPTION STARS OFFICIAL…