Russian Qt Forum

Qt => Qt Quick => Тема начата: warlock от Май 05, 2011, 12:08



Название: QML - ReferenceError: Can't find variable: myModel
Отправлено: warlock от Май 05, 2011, 12:08
Интересно получается. Написал интерфейс, бэкэнд на Qt для работы с БД. Писал свою небольшую модель. Установил контекст:
Код:
rootContext()->setContextProperty("myModel",&myModel);
В нужном файле QML присвоил модели:
Код:
 ListView {
            id: myView
            model: myModel
            delegate: myDelegate
        }
Делегат написал. Короче, все отлично работает, и отображает как мне нужно, но просто так выводит ошибку указанную в заголовке темы.
QML говорит мне что не может найти такую переменную, но все же данные "из этой переменной" отобразил.
В чем может быть проблема?


Название: Re: QML - ReferenceError: Can't find variable: myModel
Отправлено: twp от Май 06, 2011, 19:37
Лучше сделать так
Код:
rootContext()->setContextProperty("MyModel",&myModel);
Код:
MyModel {
    id: myModel
}

ListView {
            id: myView
            model: myModel
            delegate: myDelegate
        }


Название: Re: QML - ReferenceError: Can't find variable: myModel
Отправлено: warlock от Май 06, 2011, 20:24
Спасибо за ответ!
Но откуда QML узнает про новый тип MyModel{} ?
setContextProperty() делает видимым свойство, а не тип, если я не ошибаюсь. Я проверил, конечно, но "MyModel is not a type " говорит мне QML


Название: Re: QML - ReferenceError: Can't find variable: myModel
Отправлено: twp от Май 09, 2011, 11:44
перед установкой контекста нужно зарегистрировать MyModel:
Код:
qmlRegisterType<myModel>("com.mycompany.qmlcomponents", 1, 0, "MyModel");
ну и не забыть добавить в свой qml-файл строку:
Код:
import com.mycompany.qmlcomponents 1.0
вообще, это все есть а асистенте


Название: Re: QML - ReferenceError: Can't find variable: myModel
Отправлено: warlock от Май 14, 2011, 13:42
twp, спасибо, прочитал, все получилось.
Правда теперь данные грузятся и без контекста. Т.е. я зарегистрировал свой тип и все.


Название: Re: QML - ReferenceError: Can't find variable: myModel
Отправлено: twp от Май 16, 2011, 13:21
twp, спасибо, прочитал, все получилось.
Правда теперь данные грузятся и без контекста. Т.е. я зарегистрировал свой тип и все.
а, ну да, в данном случае
Код:
rootContext()->setContextProperty("MyModel",&myModel);
лишнее.