Russian Qt Forum
Ноябрь 22, 2024, 18:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QML - ReferenceError: Can't find variable: myModel  (Прочитано 8606 раз)
warlock
Гость
« : Май 05, 2011, 12:08 »

Интересно получается. Написал интерфейс, бэкэнд на Qt для работы с БД. Писал свою небольшую модель. Установил контекст:
Код:
rootContext()->setContextProperty("myModel",&myModel);
В нужном файле QML присвоил модели:
Код:
 ListView {
            id: myView
            model: myModel
            delegate: myDelegate
        }
Делегат написал. Короче, все отлично работает, и отображает как мне нужно, но просто так выводит ошибку указанную в заголовке темы.
QML говорит мне что не может найти такую переменную, но все же данные "из этой переменной" отобразил.
В чем может быть проблема?
« Последнее редактирование: Май 05, 2011, 12:20 от warlock » Записан
twp
Гость
« Ответ #1 : Май 06, 2011, 19:37 »

Лучше сделать так
Код:
rootContext()->setContextProperty("MyModel",&myModel);
Код:
MyModel {
    id: myModel
}

ListView {
            id: myView
            model: myModel
            delegate: myDelegate
        }
Записан
warlock
Гость
« Ответ #2 : Май 06, 2011, 20:24 »

Спасибо за ответ!
Но откуда QML узнает про новый тип MyModel{} ?
setContextProperty() делает видимым свойство, а не тип, если я не ошибаюсь. Я проверил, конечно, но "MyModel is not a type " говорит мне QML
Записан
twp
Гость
« Ответ #3 : Май 09, 2011, 11:44 »

перед установкой контекста нужно зарегистрировать MyModel:
Код:
qmlRegisterType<myModel>("com.mycompany.qmlcomponents", 1, 0, "MyModel");
ну и не забыть добавить в свой qml-файл строку:
Код:
import com.mycompany.qmlcomponents 1.0
вообще, это все есть а асистенте
Записан
warlock
Гость
« Ответ #4 : Май 14, 2011, 13:42 »

twp, спасибо, прочитал, все получилось.
Правда теперь данные грузятся и без контекста. Т.е. я зарегистрировал свой тип и все.
Записан
twp
Гость
« Ответ #5 : Май 16, 2011, 13:21 »

twp, спасибо, прочитал, все получилось.
Правда теперь данные грузятся и без контекста. Т.е. я зарегистрировал свой тип и все.
а, ну да, в данном случае
Код:
rootContext()->setContextProperty("MyModel",&myModel);
лишнее.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.228 секунд. Запросов: 20.