Spec-Zone.ru › Qt 5.13

Тип QML XmlListModel

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

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

Свойства

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

Методы

  • errorString()
  • объект get(индекс)
  • 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 }
}

[Отсутствует изображение qml-xmllistmodel-example.png]

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

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

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

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

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

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

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

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

См. также Демо Qt Quick - RSS News.

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

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(индекс)

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

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

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/qt-5.13/qml-qtquick-xmllistmodel-xmllistmodel.html

Spec-Zone.ru

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