您的位置 首页 国产IC

QML Image获取资源途径的细节

QML是门相当新的UI描述语言,因此在文档上总难免有疏漏之处,如果因此产生了bug,则就需要花费大量的时间去排查。在最近笔者使用QML的过程中,在Ima

QML是门适当新的UI描绘言语,因而在文档上总不免有遗漏之处,假如因而产生了bug,则就需要花费很多的时刻去排查。

在最近笔者运用QML的过程中,在Image获取资源途径的细节上就呈现了这样的状况。

Image 是qml中一个十分一般的元素,一般运用方法如下:

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

其间,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 property url imageUrl:
2 Image {
3 width:120; height:120
4 fillMode: Image.TileHorizontally
5 smooth:true
6 source: imageUrl ==:xx/me/My Data/picture.jpg?resource/qtlogo.png
7 }

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:标明。

其间第三点文中并没有阐明,可是有爱好的同学能够去试试。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/298204.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部