Size: a a a

2020 February 10

AS

Anatoly Shirokov in Qt
Bohdan Bessonov
Я вернусь к своему вопросу синглтон vs контекст.

Если у меня есть два окна, делающих разные действия на бэкэнде, как грамотно и красиво выставить им два разных контекста? Можно какой-то пример красивой архитектуры?
а что в данном случае контекст?
источник

BB

Bohdan Bessonov in Qt
Anatoly Shirokov
а что в данном случае контекст?
context->setContextProperty(name, value);
источник

AS

Anatoly Shirokov in Qt
Bohdan Bessonov
context->setContextProperty(name, value);
это хорошо, а что надо развести?
источник

BB

Bohdan Bessonov in Qt
Anatoly Shirokov
это хорошо, а что надо развести?
Ну смотри. Давай опишу задачу чтоб не было Xy-problem
источник

BB

Bohdan Bessonov in Qt
Anatoly Shirokov
это хорошо, а что надо развести?
Есть окно авторизации.

Есть окно с кучей параметров таблицей и блаблабла куча данных.

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

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

AS

Anatoly Shirokov in Qt
Bohdan Bessonov
Есть окно авторизации.

Есть окно с кучей параметров таблицей и блаблабла куча данных.

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

сейчас это работает на QML + синглтонах, написал небольшие врапперы над синглтонами, выставляю для окошек, импортирую  в QML. но ранее мы выяснили, что синглтоны хуже чем контекст, хочу попробовать реализовать иначе.
я, к сожалению, не знаю, что в твоем случае "бэкенд обработчик" могу только рассказать на пальцах как это дело у меня организовано.
источник

AT

Anatoly Tomilov in Qt
Bohdan Bessonov
Есть окно авторизации.

Есть окно с кучей параметров таблицей и блаблабла куча данных.

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

сейчас это работает на QML + синглтонах, написал небольшие врапперы над синглтонами, выставляю для окошек, импортирую  в QML. но ранее мы выяснили, что синглтоны хуже чем контекст, хочу попробовать реализовать иначе.
а речь про QQmlContext?
источник

AT

Anatoly Tomilov in Qt
судя по setContextProperty — да.
источник

BB

Bohdan Bessonov in Qt
Anatoly Shirokov
я, к сожалению, не знаю, что в твоем случае "бэкенд обработчик" могу только рассказать на пальцах как это дело у меня организовано.
С++ код который по сигнал-слоту лезет в интернет, процессит ответ от сервера, парсит, готовит, возвращает обратно в QML
источник

AS

Anatoly Shirokov in Qt
Bohdan Bessonov
С++ код который по сигнал-слоту лезет в интернет, процессит ответ от сервера, парсит, готовит, возвращает обратно в QML
отлично
источник

AS

Anatoly Shirokov in Qt
тогда это схоже тому о чем будет речь
источник

AS

Anatoly Shirokov in Qt
итак, я общаюсь с беком через RPC на базе REST. поэтому я в main.qml у меня глобальный:
    ConterraApi {

       id: conterraApi
...
  }
источник

AS

Anatoly Shirokov in Qt
там где мне необходимо вызвать RPC (на любой странице, в любом компоненте) у меня:
    ConterraMethod {
       id: rjurpersonListMethod
       api: conterraApi
       method: "app_RJURPERSN_bymodule_get"
       parameters: ({
                        "module": "tmc"
                    })
       onRefreshed: {
           console.info("Получен список предприятий:")
           var model = rjurpersonListMethod.resultSetModel(0)
           for (var i = 0; i < model.count; ++i) {
               console.log(model.get(i).fullname)
           }
           enterpriseComboBox.model = model
       }
   }
источник

AS

Anatoly Shirokov in Qt
в итоге, у меня есть абстракция ConterraApi, которая инкапсулирует способ получения данных
источник

AS

Anatoly Shirokov in Qt
и абстракция ConterraMethod - абстракция RPC
источник

AS

Anatoly Shirokov in Qt
надо другое соединение, я создаю новый ConterraApi и делают байдинг ConterraMethod на него
источник

AS

Anatoly Shirokov in Qt
ConterraApi - это соединение с user/password свойствами
источник

AS

Anatoly Shirokov in Qt
@b2soft не зашло? в итоге, все объекты необходимые для работы с backend-ом создаются в QML через декларацию.
источник

BB

Bohdan Bessonov in Qt
Anatoly Shirokov
@b2soft не зашло? в итоге, все объекты необходимые для работы с backend-ом создаются в QML через декларацию.
я только прочитал. Так получается прямо можно api задать в QML?
источник

BB

Bohdan Bessonov in Qt
а если допустим, я хочу что-то на диске делать, файлы копировать, по сигналу от QML, короче еще попробюу, спсибо за пример
источник