Ds
Nov. 4, 2020, 3:07 p.m.

Получить указатель из QML на класс плагина картографии

Map, OSM, QML, plugin

Здравствуйте, у меня есть кастомный плагин для OpenStreetMap который работает в оффлайн режиме с картами, а в QML у меня компонент Map в котором используется этот плагин:

  1. Window {
  2. visible: true
  3. width: 640
  4. height: 480
  5. Map {
  6. id: map
  7. anchors.fill: parent
  8. zoomLevel: 4
  9. center: QtPositioning.coordinate(54,28);
  10. copyrightsVisible: false
  11. plugin: Plugin {
  12. name: "osm_custom";
  13. PluginParameter {
  14. name: "osm_custom.mapping.offline.directory"
  15. value: "/home/deymos/Рабочий стол/build-Tiler-Desktop_Qt_5_14_1_GCC_64bit-Debug/offline_tiles"
  16. }
  17. }
  18. }
  19. }

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

P.S. Плагин находится в другой директории и связан с QML приложением только тем, что в компоненте Plugin указывается.

2

Do you like it? Share on social networks!

7
Алексей Внуков
  • Nov. 4, 2020, 4:38 p.m.

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

    Ds
    • Nov. 4, 2020, 5:55 p.m.


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

      Алексей Внуков
      • Nov. 4, 2020, 5:59 p.m.

      поскольку у вас есть исходники плагина, что вам мешает интегрировать в свой проект и использовать как угодно и без ограничений, а при необходимости добавлять свои ф-ции?

        Ds
        • Nov. 5, 2020, 2:45 a.m.

        я пробовал сделать всё в одном приложении но это невозможно, нужно подключать через компонент карт.

          Алексей Внуков
          • Nov. 5, 2020, 2:07 p.m.

          может вы просто не так делали? вам нужно скорее всего создать класс обработчик плагина и его подгружать, а уже в обработчике описать всю работу с классами плагина.

          п.с. 3-я строчка яндекса "qml plugin to c++ class" QML Plugin load from C++

            Ds
            • Nov. 5, 2020, 3:24 p.m.

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

              Алексей Внуков
              • Nov. 5, 2020, 5:17 p.m.

              во-первых: вы разрабатываете приложение которое одновременно выводит информацию в виджет и в qml (это разные вещи)? у вас где-то путаница в терминах.
              во-вторых: зарегистрируйте плагин как Singleton а класс, в котором описывается работа с плагином, поместить в singeltonProvider, и он не будет копироваться

                Comments

                Only authorized users can post comments.
                Please, Log in or Sign up
                • Last comments
                • AK
                  April 1, 2025, 11:41 a.m.
                  Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                • Evgenii Legotckoi
                  March 9, 2025, 9:02 p.m.
                  К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                • VP
                  March 9, 2025, 4:14 p.m.
                  Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                • ИМ
                  Nov. 22, 2024, 9:51 p.m.
                  Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                • Evgenii Legotckoi
                  Oct. 31, 2024, 11:37 p.m.
                  Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup