1、概述
XmlListModel是QtQuick用于从XML数据创建只读模型的组件。它可以作为各种view元素的数据源,比如ListView、GridView、PathView等;也可以作为其他和model交互的元素的数据源。通过XmlRole定义角色,如name、age和height,并使用XPath查询来提取数据。
2、重要属性
- source:指定XmlListModel使用的XML文档的位置,可以是一个网络地址,也可以是本地地址。
- xml:保存用于当前model的XML字符串,应当是UTF-8编码的。当同时指定xml和source时,xml生效。
- query:XPath表达式,以"/"或"//"起始,作为一个基础的XPath表达式,和XmlRole的query结合使用。
- roles:XmlRole对象的列表,XmlListModel正是通过它们从XML文档中提取数据的。
- count:表示当前model内数据的个数。
- namespaceDeclarations:保存在XPath中使用的命名空间。
- status:表示model的当前状态,取XmlListModel.Null、XmlListModel.Ready、XmlListModel.Loading、XmlListModel.Error中的一个。
- progress:表示XML文档的下载进度,取值范围为0.0~1.0,取值为1.0表示下载完成。如果是本地XML,progress会在读取数据时立即变成1.0。
3、重要方法
-
get():可以得到指定索引位置的数据对象,然后可以根据role-name来访问数据。
-
reload():用来重新加载model。如果没有指定关键角色,所有数据都会被删除,然后model将从头构建。如果指定了关键角色,reload()只会添加或更新与关键角色匹配的数据。
Item {
width: 300
height: 480
Component {
id: imageDelegate
Item {
width: listView.width
height: 400
Column {
Text {
text: title
}
Image {
source: imageSource
}
}
}
}
XmlListModel {
id: imageModel
source: "http://feeds.nationalgeographic.com/ng/photography/photo-of-the-day/"
query: "/rss/channel/item"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "imageSource"; query: "substring-before(substring-after(description/string(), 'img src="'), '"')" }
}
ListView {
id: listView
anchors.fill: parent
model: imageModel
delegate: imageDelegate
}
}
觉得有帮助的话,打赏一下呗。。
需要商务合作(定制程序)的欢迎私信!!