Spec-Zone.ru › Qt 5.6

EnginioModel Тип QML

Упрощает доступ к коллекциям объектов Подробнее...

Оператор импорта: import Enginio 1.0
С: Qt 5.3
  • Список всех членов, включая наследуемые

Свойства

  • client : EnginioClient
  • operation : Enginio::Operation
  • query : QJSValue

Методы

  • EnginioReply append(QJSValue object)
  • EnginioReply remove(int row)
  • EnginioReply setProperty(int row, string propertyName, QVariant value)

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

import Enginio 1.0

Свойство query модели принимает JSON-объект.

Чтобы получить модель каждого объекта типа "objects.city", используйте:

EnginioModel {
    id: enginioModel
    client: client
    query: { "objectType": "objects.city" }
}

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

ListView {
    anchors.fill: parent
    model: enginioModel
    delegate: Text {
        text: name + ": " + population
    }
}

Обратите внимание, что к свойствам объектов можно напрямую обратиться. В этом примере в бэкенде имеется тип "objects.city" с двумя свойствами: "name" и "population".

Модель поддерживает несколько функций для изменения данных, например, append(), remove(), setProperty().

QML-версия EnginioModel поддерживает те же функции, что и C++-версия. EnginioModel C++

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

client : EnginioClient

Экземпляр EnginioClient, используемый для этой модели.

operation : Enginio::Operation

Операция, используемая для query.

query : QJSValue

Запрос, используемый для заполнения модели данными из бэкенда.

См. документацию EnginioClient::query() для получения информации о построении запроса.

Хотя реализация EnginioClient query() возвращает данные запроса как JSON-объект, для модели запрос будет интерпретирован как данные модели.

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

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

См. также EnginioClient::query().

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

EnginioReply append(QJSValue object)

Добавить новый object в модель и базу данных.

Эта функция добавляет новый объект в кэш локальной модели и отправляет асинхронный запрос бэкенду.

Поскольку добавление объекта в базу данных может завершиться неудачей по разным причинам, возвращаемый ответ необходимо сохранить и использовать для обработки ошибок (см. EnginioReply). Если операция завершается неудачей, объект, который должен был быть добавлен, снова удаляется из локальной модели. Если модель используется в представлении, а бэкенд не принимает объект из-за нарушения валидатора, пользователю будет видно, как появляется и исчезает новая строка в представлении.

Возвращает EnginioReply от бэкенда

Чтобы добавить объект "city" в модель, добавив его:

function addCity() {
    var berlin = {
        "objectType": "objects.city",
        "name": "Berlin",
        "population": 3300000
    }
    enginioModel.append(berlin)
}

EnginioReply remove(int row)

Удаляет строку row из модели и базы данных.

Эта функция немедленно удаляет строку row из локального кэша и отправляет запрос на удаление в бэкенд Enginio.

Возвращает EnginioReply от бэкенда.

См. также EnginioClient::remove().

EnginioReply setProperty(int row, string propertyName, QVariant value)

Изменение свойства объекта в модели

Свойство propertyName объекта в строке row будет установлено в value. Модель немедленно отразит изменение локально и в фоновом режиме распространит изменение на сервер.

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

Spec-Zone.ru

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