Получить указатель из QML на класс плагина картографии
Здравствуйте, у меня есть кастомный плагин для OpenStreetMap который работает в оффлайн режиме с картами, а в QML у меня компонент Map в котором используется этот плагин:
Window { visible: true width: 640 height: 480 Map { id: map anchors.fill: parent zoomLevel: 4 center: QtPositioning.coordinate(54,28); copyrightsVisible: false plugin: Plugin { name: "osm_custom"; PluginParameter { name: "osm_custom.mapping.offline.directory" value: "/home/deymos/Рабочий стол/build-Tiler-Desktop_Qt_5_14_1_GCC_64bit-Debug/offline_tiles" } } } }
И вот настало время кроме отображения карты ещё на ней отмечать места и рисовать маршрут, и все вычисления должны происходить на стороне плагина, так вот, мне нужно как то передать координаты из QML в класс плагина, в идеале если есть такая возможность нужно получить указатель на класс плагина и напрямую передать координаты.
P.S. Плагин находится в другой директории и связан с QML приложением только тем, что в компоненте Plugin указывается.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!
Пікірлер
- Ora Iro
- Жел. 24, 2024, 6:38 Т.Ж.
C++ - Тест 001. Первая программа и типы данных
- Нәтиже:40ұпай,
- Бағалау ұпайлары-8
- Akiv Doros
- Қар. 11, 2024, 2:58 Т.Қ.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:50ұпай,
- Бағалау ұпайлары-4
- molni99
- Қаз. 26, 2024, 1:37 Т.Ж.
C++ - Тест 004. Указатели, Массивы и Циклы
- Нәтиже:80ұпай,
- Бағалау ұпайлары4
добрый, а почему не используете сигналы? ну или зарегистрировать класс и на прямую к нему обращаться?
Потому что вот как всё устроено,плагин отдельно, приложение отдельно, и плагин запускается после запуска приложения, когда дело доходит до компонента Map, и непосредственный доступ к классу, или через сигналы было бы возможно только если бы плагин был частью проекта и запускался одновременно с приложением.
поскольку у вас есть исходники плагина, что вам мешает интегрировать в свой проект и использовать как угодно и без ограничений, а при необходимости добавлять свои ф-ции?
я пробовал сделать всё в одном приложении но это невозможно, нужно подключать через компонент карт.
может вы просто не так делали? вам нужно скорее всего создать класс обработчик плагина и его подгружать, а уже в обработчике описать всю работу с классами плагина.
п.с. 3-я строчка яндекса "qml plugin to c++ class" QML Plugin load from C++
проблема PluginLoader в том, что вот загружен плагин в виджете, вроде бы всё хорошо, можно в него данные прокинуть, но тут запускается qml и загружает ещё один плагин в который нет возможности из qml прокинуть данные, можно было бы в widget передать их и прокинуть оттуда, но в виджете один обьект, а в qml другой, одного и того же плагина, вот в этом проблема, поэтому и нужно как то получить указатель на плагин в рантайме в qml, и оттуда напрямую передавать данные.
во-первых: вы разрабатываете приложение которое одновременно выводит информацию в виджет и в qml (это разные вещи)? у вас где-то путаница в терминах.
во-вторых: зарегистрируйте плагин как Singleton а класс, в котором описывается работа с плагином, поместить в singeltonProvider, и он не будет копироваться