Spec-Zone.ru › Qt 5.11

Тип XmlListModel QML

Для задания только для чтения модели с помощью выражений XPath. Подробнее...

Заявление об импорте: import QtQuick.XmlListModel 2.11
  • Список всех членов, включая унаследованные

Свойства

  • count : int
  • namespaceDeclarations : строка
  • progress : вещественное
  • query : строка
  • roles : список<XmlRole>
  • source : url
  • status : перечисление
  • xml : строка

Методы

  • errorString()
  • объект get(int index)
  • reload()

Подробное описание

Для использования этого элемента, вам необходимо импортировать модуль с помощью следующей строки:

import QtQuick.XmlListModel 2.0

XmlListModel используется для создания модели только для чтения из данных XML. Он может быть использован в качестве источника данных для элементов просмотра (таких как ListView, PathView, GridView) и других элементов, которые взаимодействуют с данными модели (таких как Repeater).

Например, если в документе XML по адресу http://www.mysite.com/feed.xml есть следующее:

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    ...
    <channel>
        <item>
            <title>A blog post</title>
            <pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate>
        </item>
        <item>
            <title>Another blog post</title>
            <pubDate>Sat, 07 Sep 2010 15:35:01 GMT</pubDate>
        </item>
    </channel>
</rss>

XmlListModel мог бы создать модель из этих данных, например, так:

import QtQuick 2.0
import QtQuick.XmlListModel 2.0

XmlListModel {
    id: xmlModel
    source: "http://www.mysite.com/feed.xml"
    query: "/rss/channel/item"

    XmlRole { name: "title"; query: "title/string()" }
    XmlRole { name: "pubDate"; query: "pubDate/string()" }
}

Значение query "/rss/channel/item" указывает, что XmlListModel должен генерировать элемент модели для каждого <item> в документе XML.

Объекты XmlRole определяют атрибуты элементов модели. Здесь каждый элемент модели будет иметь атрибуты title и pubDate, соответствующие значениям title и pubDate его соответствующего <item>. (См. XmlRole::query для получения дополнительных примеров допустимых выражений XPath для XmlRole).

Модель можно использовать в ListView, например, так:

ListView {
    width: 180; height: 300
    model: xmlModel
    delegate: Text { text: title + ": " + pubDate }
}

Данные XmlListModel загружаются асинхронно, и status устанавливается в XmlListModel.Ready при завершении загрузки. Обратите внимание, что это означает, что когда XmlListModel используется для просмотра, просмотр не заполняется до тех пор, пока модель не загрузится.

Использование ключевых ролей XML

Вы можете определить определенные роли как "ключи", чтобы при вызове reload() модель добавляла и обновляла данные, содержащие новые значения для этих ключей.

Например, если роль "pubDate" выше была определена так:

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

Тогда при вызове reload() модель будет добавлять и перезагружать элементы только со значением "pubDate", которого нет в модели.

Это полезно при отображении содержимого документов XML, которые обновляются постепенно (таких как ленты RSS), чтобы избежать перерисовки всего содержимого модели в представлении.

Если указано несколько ключевых ролей, модель добавляет и перезагружает элементы только в том случае, если совокупное значение всех ключевых ролей не содержится в модели.

См. также Демонстрация Qt Quick - RSS Новости.

Документация по свойствам

count : int

Количество записей данных в модели.

namespaceDeclarations : строка

Объявления именных пространств, которые будут использоваться в запросах XPath.

Имена пространств должны быть объявлены как в XQuery. Например, если запрашиваемый документ по адресу http://mysite.com/feed.xml использует имя пространства "http://www.w3.org/2005/Atom", это можно объявить как значение по умолчанию:

XmlListModel {
    source: "http://mysite.com/feed.xml"
    query: "/feed/entry"
    namespaceDeclarations: "declare default element namespace 'http://www.w3.org/2005/Atom';"

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

progress : вещественное

Это указывает текущий прогресс загрузки источника данных XML. Это значение изменяется от 0,0 (нет загруженных данных) до 1,0 (все данные загружены). Если данные XML не из удаленного источника, progress становится 1,0 сразу после прочтения данных.

Обратите внимание, что когда progress равен 1,0, данные XML были загружены, но еще не загружены в модель на этом этапе. Используйте свойство status, чтобы узнать, когда данные XML были прочитаны и загружены в модель.

См. также status и source.

query : строка

Абсолютный запрос XPath, представляющий основной запрос для создания элементов модели из объектов XmlRole этой модели. Запрос должен начинаться с '/' или '//'.

roles : список<XmlRole>

Роли, доступные для этой модели.

source : url

Расположение источника данных XML.

Если оба source и xml заданы, используется xml.

status : перечисление

Указывает состояние загрузки модели, которое может быть одним из следующих:

  • XmlListModel.Null - данные XML не заданы для этой модели.
  • XmlListModel.Ready - данные XML загружены в модель.
  • XmlListModel.Loading - модель загружает данные XML.
  • XmlListModel.Error - произошла ошибка во время загрузки модели. См. errorString() для получения подробностей об ошибке.

См. также progress.

xml : строка

Это свойство содержит данные XML для этой модели, если оно задано.

Текст предполагается закодированным в UTF-8.

Если оба source и xml заданы, используется xml.

Документация по методам

errorString()

Возвращает строковое описание последней ошибки, если status равен XmlListModel::Error.

объект get(int index)

Возвращает элемент в модели по индексу index.

Например, для модели такого вида:

XmlListModel {
    id: model
    source: "http://mysite.com/feed.xml"
    query: "/feed/entry"
    XmlRole { name: "title"; query: "title/string()" }
}

Это обращение к значению title первого элемента модели:

var title = model.get(0).title;

reload()

Перезагружает модель.

Если не заданы ключевые роли, все существующие данные модели удаляются, и модель перестраивается с нуля.

В противном случае элементы добавляются только если в модели нет элементов с соответствующими значениями ключевых ролей.

См. также Использование ключевых ролей XML и XmlRole::isKey.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qml-qtquick-xmllistmodel-xmllistmodel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API