Russian Qt Forum

Qt => Qt Quick => Тема начата: navrocky от Май 16, 2014, 11:37



Название: Проблема с созданием модели данных на чистом QML
Отправлено: navrocky от Май 16, 2014, 11:37
Попытался сделать простую модель данных на чистом QML, сразу столкнулся с несколькими трудностями. Забегая вперед хочу поинтересоваться как кто решал эту проблему, если вообще пытался?

1. Она должна быть синглтоном, как его создать в QML?

Сейчас сделал отдельный stateless JS файл и там создал объект модели таким образом:

DataModel.js
Код:
var component = Qt.createComponent("FavoritesModel.qml");
var favs = component.createObject(null, {});

Соответственно в коде использую так:

Код:
import "DataModel.js" as Model

...

Model.favs.addFav("adasdasd")

Тут вроде бы всё хорошо, но не работает кододополнялка в редакторе вообще.

2. Модель объявил так:

FavoritesModel.js
Код:
import QtQuick 2.0

QtObject {
    property var model: ListModel {}

    function addFav(title)
    {
        model.append({"title": title});
    }
}

Лаконично и красиво. С ListView вроде бы работает как полагается. Но возникла проблема с сохранением данных в локальное хранилище.

3. Сохранение в локальное хранилище:

Сперва хотел использовать для этой цели Settings (Qt.labs.settings 1.0), т.к. оно по идее имеется в QtCore и никаких жирностей дополнительно не тащится. Но попытка объявить объект Settings внутри объекта модели сразу приводит к неработоспособности, выдается ошибка: QQmlComponent: Component is not ready. Пляски с бубном не помогли. Надо только объявлять Settings в другом файле, руками формировать свойства и присваивать их из модели в Settings.
В общем не очень красиво, и сразу увеличивает количество кода.

Вариант с QtQuick.LocalSettings мне тоже не нравится, нет вообще никакой декларативности, надо писать SQL запросы, апдейтить схему БД, тащится жирный sqlite на все платформы включая телефонные и опять таки много кода..

Вот этот пункт самый геморройный получается и очень меня удручает.


Название: Re: Проблема с созданием модели данных на чистом QML
Отправлено: NKovalev64 от Май 20, 2014, 23:08
Просто не нужно делать модели на js\qml - и проблемы не будет!
О балансе QML vs C++ можно послушать\посмотреть здесь:
http://tech.yandex.ru/events/yagosti/cpp-user-group/talks/1792/


Название: Re: Проблема с созданием модели данных на чистом QML
Отправлено: navrocky от Май 24, 2014, 18:37
Проблему с Settings  я победил, и все вроде бы ок. Но, в итоге, остановился на плюсовой реализации модели, как-то комфортнее писать, больше возможностей по работе с типами.

Но есть такие области (всякие плазмоиды), когда надо модель городить в QML и это можно сделать как показала практика.