QML类型:XmlListModel、XmlListModelRole

XmlListModel

一、描述

要使用此元素,需要导入模块:

import QtQml.XmlListModel

XmlListModel 用于从 XML 数据创建只读模型。

二、使用示例

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <item>
      <title>Qt 6.0.2 Released</title>
      <link>https://www.qt.io/blog/qt-6.0.2-released</link>
      <pubDate>Wed, 03 Mar 2021 12:40:43 GMT</pubDate>
    </item>
    <item>
      <title>Qt 6.1 Beta Released</title>
      <link>https://www.qt.io/blog/qt-6.1-beta-released</link>
      <pubDate>Tue, 02 Mar 2021 13:05:47 GMT</pubDate>
    </item>
    <item>
      <title>Qt Creator 4.14.1 released</title>
      <link>https://www.qt.io/blog/qt-creator-4.14.1-released</link>
      <pubDate>Wed, 24 Feb 2021 13:53:21 GMT</pubDate>
    </item>
  </channel>
</rss>
import QtQuick 2.12
import QtQuick.Window 2.0
import QtQml.XmlListModel

Window
{
    id:root;
    visible: true;
    width: 200; height: 200

    XmlListModel
    {
        id: xmlModel
        source: "qrc:/demo.xml"
        query: "/rss/channel/item"

        XmlListModelRole { name: "title"; elementName: "title" }
        XmlListModelRole { name: "pubDate"; elementName: "pubDate" }
        XmlListModelRole { name: "link"; elementName: "link" }
    }

    ListView
    {
        anchors.fill: parent
        model: xmlModel
        delegate: Text { text: title + ": " + pubDate + "; link: " + link }
    }
}

“/rss/channel/item” 指定 XmlListModel 应该为 XML 文档中的每个 <item> 生成一个模型项。

三、属性成员

1、count : int

模型中数据条目的数量。

2、progress : real

这表示下载 XML 数据源的当前进度。该值的范围从 0.0(未下载数据)到 1.0(已下载所有数据)。 如果 XML 数据不是来自远程源(来自网络上的xml文件),则一旦读取数据,进度就会变为 1.0。

请注意,当进度为 1.0 时,XML 数据已下载,但此时尚未加载到模型中。 使用 status 属性可以查明 XML 数据何时被读取并加载到模型中。

3、query : string

用于从此模型的 XmlListModelRole 对象创建模型项的基本路径。应以“/”开头。

4、roles : list<XmlListModelRole>

可用于此模型的角色。 

5、source : url

XML 数据源的位置。可以来自网络。

6、status : enumeration

模型加载状态。

  • XmlListModel.Null:没有为此模型设置 XML 数据。
  • XmlListModel.Ready:XML 数据已加载到模型中。
  • XmlListModel.Loading:模型正在读取和加载 XML 数据。
  • XmlListModel.Error:加载模型时出错。

四、成员函数

1、errorString()

如果状态为 XmlListModel.Error,则返回发生的最后一个错误的字符串描述。

2、reload()

重新加载模型。


XmlListModelRole

一、属性成员

1、attributeName : string

将用于读取数据的 XML 元素的属性。XML 元素由 elementName 属性指定。

2、elementName : string

将用于读取数据的 XML 元素的名称或 XML 元素的路径。该元素必须实际包含文本。

 如上图指示要为 "documents/document" 和 "documents/document1" 分别创建模型项。

可省略,如下:

为 "documents/document" 的所有结点创建模型项。

3、name : string

角色的名称。此名称用于访问此角色的模型数据。

如上图,为 document 结点创建的模型项中属性为“title”(attributeName 指定的)的值。

测试代码:

<?xml version="1.0" encoding="UTF-8"?>
<documents>
    <document title="a1" title2="b1"/>
    <document1 timestamp="a2" title2="b2"/>
</documents>
import QtQuick 2.12
import QtQuick.Window 2.0
import QtQml.XmlListModel

Window
{
    id:root;
    visible: true;
    width: 200; height: 200

    XmlListModel
    {
        id: xmlModel
        source: "qrc:/demo.xml"
        query: "/documents"
        XmlListModelRole
        {
            name: "modelItem01"
            elementName: "document"
            attributeName: "title"
        }
        XmlListModelRole
        {
            name: "timestamp"
            elementName: "document1"
            attributeName: "title2"
        }
    }
    ListView
    {
        anchors.fill: parent
        model: xmlModel
        delegate: Text { text: modelItem01 }
    }
}

二、使用示例

<?xml version="1.0" encoding="UTF-8"?>
<documents>
    <document title="a1" title2="b1"/>
    <document title="a2" title2="b2"/>
    <document title="a3" title2="b3"/>
    <document title="a4" title2="b4"/>    
</documents>
import QtQuick 2.12
import QtQuick.Window 2.0
import QtQml.XmlListModel

Window
{
    id:root;
    visible: true;
    width: 200; height: 200

    XmlListModel
    {
        id: xmlModel
        source: "qrc:/demo.xml"
        query: "/documents/document"
        XmlListModelRole
        {
            name: "modelItem01"
            elementName: ""
            attributeName: "title"
        }
    }
    ListView
    {
        anchors.fill: parent
        model: xmlModel
        delegate: Text { text: modelItem01 }
    }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值