QML模型(XmlRole ,XmlListModel)

XmlListModel是QtQuick用于从XML数据创建只读模型的组件。通过XmlRole定义角色,如name、age和height,并使用XPath查询来提取数据。关键角色在reload时决定是否更新或添加数据,适用于增量更新场景。例如,name可以作为关键角色,确保只有新name值的项目才会被添加或更新。

XmlRole (XML角色)

用于为XmlListModel指定角色

属性:

isKey定义这是否为关键角色。关键角色用于确定在调用 XmlListMode::reload() 时是否应更新一组值或将其添加到 XML 列表模型中。
name角色的名称。此名称用于访问此角色的模型数据
query此角色的相对 XPath 表达式查询。查询必须是相对的;它不能以“/”开头

例子:

 获取name,age,height:

        XmlRole{
            name:"name"
            query: "name/string()"
        }

        XmlRole{
            name:"age"
            query: "age/string()"
        }

        XmlRole{
            name:"height"
            query: "height/string()"
        }

使用关键的XML角色:

isKey : bool:定义这是否为关键角色。关键角色用于确定在调用 XmlListModel:reload ()时是否应更新一组值或将其添加到 XML 列表模型中。

XmlListModel(Xml列表视图)

使用时需要导入:

import QtQuick.XmlListModel xxx(根据你的版本设置)

XmlListModel允许从一个XML数据源创建一个模型,可以通过XmlRole元素来指定一个角色。XmlListModel 用于从 XML 数据创建只读模型。

属性:

count模型中数据条目的数量
namespaceDeclarations要在 XPath 查询中使用的命名空间声明
progress这指示下载 XML 数据源的当前进度
query一个绝对 XPath 查询
roles:list<XmlRole>要为此模型提供的角色。
sourceXML 数据源的位置。
status状态
xml此属性保存此模型的 XML 数据

status:enumertion(状态)

XmlListModel.Null
XmlListModel.Ready就绪
XmlListModel.Loading正在加载
XmlListModel.Error错误 

函数:

errorString()错误信息
get(int index)获取索引的数据
reload()重新加载模型

query的使用:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <id id="1">
        <name>AAA</name>
        <age>13</age>
        <height1>160</height1>
    </id>
    <id id="2">
        <name>BBB</name>
        <age>15</age>
        <height1>165</height1>
    </id>
</root>

读取name,age,height的话:

XmlListModel{
        id:xmodel
        source: "qrc:/image/XMLtext.xml"
        query: "/root/id"
        XmlRole{name:"name";query: "name/string()"}
        XmlRole{name:"age";query: "age/string()"}
        XmlRole{name:"height1";query: "height1/string()"}

    }

 使用listView显示数据:

ListView{
            width: 200;height: 200
            model:xmodel
            delegate: Text {
                text: name+" "+age+" "+height
            }
        }

运行结果:

 XML关键角色:

XmlRole{name: "name"; query:"name/string()"; iskey:true}

可以将某些角色定义为“键”,以便在调用 reload() 时,模型将仅添加和刷新包含这些键的新值的数据。

然后,当调用 reload() 时,模型将仅添加和重新加载具有模型中尚不存在的“name”值的项目。

这在显示增量更新的 XML 文档的内容(如 RSS 源)以避免在视图中重新绘制模型的全部内容时非常有用。

如果指定了多个关键角色,则模型仅添加和重新加载具有模型中尚不存在的所有关键角色的组合值的项目。

get()获取索引处的项:

var str=xmodel.get(1).name//获取第二项的name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值