Как правильно отделить QML от бэкенда на Си++ |
Здравствуйте, гость ( Вход | Регистрация )
Как правильно отделить QML от бэкенда на Си++ |
iDarkLord |
20.10.2014, 14:32
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.10.2014 Пользователь №: 4255 Спасибо сказали: 0 раз(а) Репутация: 0 |
Сабж. Ключево слово правильно, а не абы как что б работало.
Я так понял простой способ заключается в том, что бы по QML свойству: objectName получить объект и установить у него нужное свойство. Как то так:
Ну вопервых это как то убого у каждого нужного тебе компонента задавать помимо id еще и objectName, а во вотрых в доках написано, что перемещаться по дереву объектов QML таким способом не комильфо и такой способ должен использоваться для отладки. И как бы не понятно как мне связать мои представления с моделями, которые на С++. Еще один способ: это использовать Q_PROPERTY и Q_INVOKABLE для доступа к свойствам и методам класса, который потом зарегестрировать через qmlRegisterType. Это опять же как то убого, и не дает простого установить модель представлению, а только через объект посредник. Есть вариант можно регестрировать класс который и будет моделью (я не много не понял детали этой рализации), но это не избавляет от самого тупого в этом решении - необходимости писать import <ClassName> <Version> в QML файле. Так же не очень понятно с сигналами и слотами. Конечно дока QT предлагает зарегать синглтон и через него передавть все на свете и свойства и сигналы и слоты там наделать и методы. Мне кажется это лучшим вариантом. Поначалу когда читаешь доки везде написано, что все легко и просто, и мы только и сделали все это что бы вам было удобно. Но на деле QML крайне плохо интегрирован с Си++. Я с трудом нашел способ что бы связать модель на Си++ с представлением QML и то, как утверждает документация плохим способом. Складывается впечатление, что все приложение нужно делатьт на QML, а его логику писать на JS. Немного резюмируя, как обрабатывать события QML интерфейса, как связать QML с данными на бэкенде на Си++ ? |
|
|
iDarkLord |
31.10.2014, 12:28
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 20.10.2014 Пользователь №: 4255 Спасибо сказали: 0 раз(а) Репутация: 0 |
Короче, нужно юзать регистрацию класса в системе QML как синглтона функцией
Пример http://qt-project.org/doc/qt-5/qtqml-tutor...cs-example.html Там правда не используется синглтон, а просто регестрируется тип QML, но взаимодействие меду классом и гуи описано отлично. |
|
|
Текстовая версия | Сейчас: 22.11.2024, 8:11 |