QML Image获取资源路径的细节

QML Image获取图片资源路径的细节 QML Image获取图片资源路径的细节, 解决QML Image: Cannot open: qrc:///images/Blue hills.jpg ”的错误。 阅读详情

QML是门相当新的UI描述语言,因此在文档上总难免有疏漏之处,如果因此产生了bug,则就需要花费大量的时间去排查。
在最近笔者使用QML的过程中,在Image获取资源路径的细节上就出现了这样的情况。
Image 是qml中一个非常普通的元素,通常使用方法如下:

?
1
2
3
4
5
6
Image {
     width: 120 ; height: 120
     fillMode: Image.TileHorizontally
     smooth: true
     source: "qtlogo.png"
}

其中,source指的Image元素获取资源的url路径,这个url可以是本地的绝对路径或者相对路径,也可以是qt资源系统的路径,甚至是网络资源的路径。
正是这个看起来不起眼的路径,却会带来跟预期想之外的结果,并且,仅仅从代码上来看,没有半点错误的地方。
要了解这种情况的出现,应该要知道qml的两种使用方式:
1.暴露QML源码的使用方法,即不对QML文件进行处理,存放在可执行文件的目录下,使用QtDeclarative模块动态载入,一般适合以开源程序;
2.混淆QML源码的使用方法,即将QML文件加入到qt资源系统,编译成二进制文件供QtDeclarative模块使用,这样的好处,是可以隐藏代码,供商业项目使用。
在前种的使用方式中,Image元素对于读取资源路径正确无误,在Mac.OS.X,Ubuntu和windows平台上表示一致,但是后者,却出现了不同。
假设Image以如下代码使用:
QML是门相当新的UI描述语言,因此在文档上总难免有疏漏之处,如果因此产生了bug,则就需要花费大量的时间去排查。
在最近笔者使用QML的过程中,在Image获取资源路径的细节上就出现了这样的情况。
Image 是qml中一个非常普通的元素,通常使用方法如下:

?
1
2
3
4
5
6
7
property url imageUrl: ""
Image {
     width: 120 ; height: 120
     fillMode: Image.TileHorizontally
     smooth: true
     source: imageUrl == "" : "xx/me/My Data/picture.jpg" ? "resource/qtlogo.png"
}

QML代码段所在的QML文件和qtlogo都处在qt资源系统中,xx/me/My Data/picture.jpg则值的是三个系统下实际的绝对路径,这是很异常的情况发生了。
在windows下Image的表现很正常,但是在Ubuntu下,却无法正常显示系统路径中的图片picure.jpg,一个代码显示出不同的结果来是相当费解的事,但是事实确很简单,这个source提供Url的写法是错误的,一个错误的代码自然会出现异常情况。
当QML处在qt 资源系统中,它获取图片的路径自然也是去qt资源系统中获得了,也就是说上述的两个路径变成了qrc:xx/me/My Data/picture.jpg和qrc:resource/qtlogo.png,前者根本不在资源系统内,自然就不会显示了。
当然,对这样的情况自然有正确的解决办法,那就是对前者路径的使用应该使用file:///xx/me/My Data/picture.jpg,这样QML才会正常解析为本地文件的路径。
至此,对于Image 资源路径可以总结出三个规律:
1.在没用使用qt资源系统时,Image的路径可以是绝对或者相对,并不需要特殊的表示;
2.当使用qt资源系统时,如果要特定知指向本地路径中的图片资源,那就要使用file://标示;
3.当获取网络图片资源并使用使用qt资源系统,由于有http表示存在,QML会自然去除qrc:标示。
其中第三点文中并没有说明,但是有兴趣的同学可以去试试。

qml按路径读取图片_QML Image获取图片资源路径的细节 | 学步园 近期重新开始Qt5,在学到QML获取本地图片资源时总是遇到类似 “ QML Image: Cannot open: qrc:///images/Blue hills.jpg”的错误,即无法正常载入本地的图片资源,经过一般努力,终于搞定拉!特此记录下来,方便自己和各位同仁查询!一开始遇到问题的时候在网上搜索了些久都没成功解决问题,不过倒是有些启发,比如在上面网址看到的资料中就多少有些体会。在这里先贴... 阅读详情

相关推荐

QML Image组件资源加载全解析:从路径配置到性能优化的实战指南

在现代GUI开发中,资源加载是基础且关键的技术环节,其原理涉及文件系统访问、内存管理和渲染管线等多个层面。Qt框架通过资源系统(Qt Resource System)将图片、字体等静态资源编译进二进制文件,实现跨平台部署和快速访问。这项技术的核心价值在于提升应用性能、简化部署流程并增强代码可维护性。在嵌入式设备、移动应用和桌面软件等场景中,高效的资源管理直接影响用户体验和系统稳定性。本文聚焦QML Image组件的实际应用,深入探讨资源路径配置、构建系统集成和性能调优等工程实践,特别针对heif image

weixin_27697385的博客 247

QML类型说明-CanvasImageData

CanvasImageData ImportStatement:   import QtQuick 2.2   Properties data :object height : int width : int   DetailedDescription 图片像素数据。包含存储在CanvasImageData对象的数据的实际尺寸和RGBA格式的数据队列,每种色彩在0~255之间的整

杞櫹椅桐的专栏 1781

别再写冗长路径了!Qt QML资源文件管理:用前缀和别名让代码清爽3倍

本文详细介绍了Qt QML中资源文件管理的最佳实践,通过使用.qrc文件的前缀(Prefix)和别名(Alias)功能,有效解决路径冗余、维护困难等问题。文章提供了模块化配置技巧、别名命名规范及实战迁移步骤,帮助开发者提升代码可读性和团队协作效率,使QML项目资源管理更加清爽高效。

weixin_42537919的博客 378

Roson的Qt之旅#105 QML Image引用大尺寸图片

QML Image引用大尺寸图片;QML Image使用大尺寸图片报错;out of memory allocating 1073745919 bytes;QML Image用绝对路径设置图片

Allen Roson 956

SerDes硬件设计原理介绍

接收端:外部差分串行数据------线性均衡器----(CDR从数据中恢复出采样时钟)-----解串器(串行信号转并行信号)-------8B/10B的解码器或解扰器-----FIFO-----FPGA接受差分并行数据。发送端: FPGA发送差分并行数据----FIFO------8B/10B编码器或者扰码器-----串行器(并行信号转串行信号)-----均衡器(滤波)--------TX串行信号差分外发。串行器:8bit的并行数据----2bit的并行数据----1bits的串行数据。

weixin_42304393的博客 1109

Qml 中的那些坑(一)---Image 的内存

【写在前面】 首先,要提一个版本bug。 因为一个类似的bug是在Qt 5.13.0 中 ( 5.12 则没有),由QQuickPaintedItem引起的。 详见:https://bugreports.qt.io/browse/QTBUG-78063 同样的,使用Image后,也会无限增长内存。 但是先忽略这个bug,因为这里要讲的是Image的内存。 【正文开始】 在qml中,I...

梦起丶的博客 6126

硬件笔记——HDMI接口

HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。

2501_94625908的博客 542

C++部分接受图片字节数组,在QML中用Image将图片加载显示出来

--------------------------------image.h------------------------------------  Q_PROPERTY(QString strData MEMBER m_strData NOTIFY strDataChanged)  protected:  QString m_strData;  signals:     void s...

大奎的博客 1364

IEEE论文接收后,收到Proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)

本文详细解析了IEEE论文接收后Proof校样的全流程,从邮件关键信息解码到精准修改标注,提供48小时内高效完成校样的实战指南。涵盖登录技巧、文件验证、修改标注黄金法则及九宫格检查清单,帮助作者避免常见错误,确保论文顺利发表。

weixin_30652491的博客 563

Edge主页被2345劫持?手动清理注册表与组策略的完整方案

浏览器主页劫持是Windows系统中常见的恶意篡改行为,其原理是通过修改注册表、快捷方式、组策略等多处系统配置,强制锁定浏览器启动页。这类劫持不仅影响上网体验,还可能带来隐私泄露和恶意软件感染风险。在安全防护与系统优化场景中,掌握手动清理主页劫持的技能至关重要。本文针对Edge主页被2345导航劫持的问题,深入解析劫持入口,提供从快捷方式、注册表到组策略的逐层清理步骤,并给出防复发策略,帮助用户彻底摆脱顽固劫持。

weixin_30582943的博客 385

qml按路径读取图片_QML Image获取图片资源路径的细节

近期重新开始Qt5,在学到QML获取本地图片资源时总是遇到类似 “ QML Image: Cannot open: qrc:///images/Blue hills.jpg”的错误,即无法正常载入本地的图片资源,经过一般努力,终于搞定拉!特此记录下来,方便自己和各位同仁查询!一开始遇到问题的时候在网上搜索了些久都没成功解决问题,不过倒是有些启发,比如在上面网址看到的资料中就多少有些体会。在这里先贴...

weixin_42317482的博客 2188

【EB-02】TC397 Tresos 最小工程配置

主要设置McalLibPublishedInformation 参数,会根据ResourceM配置的芯片自动加载。可以看到再工程目录中生成了output文件夹,里面由这些模块生成的头文件,编译脚本和epc文件。如果选择生成swcd,可以生成xxx_Bswmd.arxml给别的工具使用。如果没有Error和Problems就可以点击生成代码。点击工程校验看看工程是否由错误。

libuping2023的博客 327

qml按路径读取图片_QML Image获取资源路径的细节

QML是门相当新的UI描述语言,因此在文档上总难免有疏漏之处,如果因此产生了bug,则就需要花费大量的时间去排查。在最近笔者使用QML的过程中,在Image获取资源路径的细节上就出现了这样的情况。Image 是qml中一个非常普通的元素,通常使用方法如下:Image{width:120;height:120fillMode:Image.TileHorizontallysmooth:tr...

weixin_29129833的博客 1093

路径规划 | 详解混合A*算法Hybrid A*(附ROS C++/Python/Matlab仿真)

Hybrid A*算法通过结合连续状态空间搜索、运动约束考虑和轨迹优化等技术,弥补了普通A*算法在高维连续空间和的不足,提高了路径规划的效率和鲁棒性,广泛应用于车规级路径规划。本文详细图解Hybrid A*算法的原理——启发式、维诺耗散项、节点扩展法则等,并给出ROS C++、python、matlab三种语言的仿真实现加深理解

FRIGIDWINTER的博客 1万+

14、方法论 - 自顶向下与自底向上的结合

本文探讨了如何将自顶向下的规范驱动方法与自底向上的组件构建方法相结合,以形成更加全面的编程理论。通过引入代数法则,简化逻辑关系、提高代码可读性并支持形式化验证,结合实际案例(如智能家居控制系统)展示了如何在设计和实现阶段确保系统的正确性和可靠性。文章还讨论了工具支持的重要性,并提出了未来发展的方向。

lstm7chronicler的博客 174

踩坑记录:QML加载图片资源

踩坑记录:QML加载图片资源

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 4768

【华为OD机试真题 新系统】959、 水库溃坝填补 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】959、 水库溃坝填补 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华

KJ.JK 2939

关于在资源中的QML文件中访问本地Image文件(Qt的Bug)

这里要讨论的内容是,将一个 QML 文件放置到 qrc 资源中后,需要访问本地目录的文件,比如图片的时候,遇到的一个在 Windows 和 Linux(MeeGo)平台下表现不一致的 Bug,以及处理方法。         事件起因:         一个在资源文件中的 QML 需要引用本地的图片资源。在 PC(Windows)下面运行正常,但是下到手机就是不工作,开启调试模式,发现手

LynFun的专栏 6115

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

我的第一个qml程序

根据<<Qt Cadaques>>第四页的例子,用qml实现一个纸风车放到绿地背景下。文中描述不甚详尽,这里给一个step-by-step的例子,从建立工程开始,尽量把细节交代清楚。 建立工程 建立一个普通的c++工程即可,内含一个mainwindow.h/.cpp文件,可以不要ui文件 pro文件添加如下 QT += core gui quick qml 新建qml文件 import QtQuick 2.0 Image { source: "b

liji_digital的博客 290

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: C#技术分享【PDF转换成图片——13种方案】
下一篇: QML属性汇总
艺丢丢
博客等级 码龄12年 16粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值