Ds
Deymos s4 ноября 2020 г. 15:07

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

Map, OSM, QML, plugin

Здравствуйте, у меня есть кастомный плагин для 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
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

7
Алексей Внуков
  • 4 ноября 2020 г. 16:38

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

    Ds
    • 4 ноября 2020 г. 17:55


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

      Алексей Внуков
      • 4 ноября 2020 г. 17:59

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

        Ds
        • 5 ноября 2020 г. 2:45

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

          Алексей Внуков
          • 5 ноября 2020 г. 14:07

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

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

            Ds
            • 5 ноября 2020 г. 15:24

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

              Алексей Внуков
              • 5 ноября 2020 г. 17:17

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

                Комментарии

                Только авторизованные пользователи могут публиковать комментарии.
                Пожалуйста, авторизуйтесь или зарегистрируйтесь
                Ua

                Qt - Тест 001. Сигналы и слоты

                • Результат:84баллов,
                • Очки рейтинга4
                Ua

                Qt - Тест 001. Сигналы и слоты

                • Результат:42баллов,
                • Очки рейтинга-8
                ОК

                Qt - Тест 001. Сигналы и слоты

                • Результат:47баллов,
                • Очки рейтинга-6
                Последние комментарии
                ИМ
                Игорь Максимов22 ноября 2024 г. 21:51
                Django - Урок 017. Кастомизированная страница авторизации на Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                Evgenii Legotckoi
                Evgenii Legotckoi31 октября 2024 г. 23:37
                Django - Урок 064. Как написать расширение для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
                A
                ALO1ZE19 октября 2024 г. 17:19
                Читалка fb3-файлов на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
                ИМ
                Игорь Максимов5 октября 2024 г. 16:51
                Django - Урок 064. Как написать расширение для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
                d
                dblas55 июля 2024 г. 20:02
                QML - Урок 016. База данных SQLite и работа с ней в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
                Сейчас обсуждают на форуме
                f
                firstlunoxod15 февраля 2025 г. 13:46
                Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
                Дмитрий
                Дмитрий3 февраля 2025 г. 16:24
                Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
                NW
                Nayo Wai30 января 2025 г. 19:22
                не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
                n
                nkly3 января 2025 г. 12:52
                Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
                M
                Marsel17 августа 2023 г. 0:26
                OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

                Следите за нами в социальных сетях