67 / 43 / 17
Регистрация: 10.02.2016
Сообщений: 137
1

Передать ID метки на карте в главное окно

28.02.2024, 10:28. Показов 206. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Отображаю карту с метками в виджете
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlQuery>
#include <QDebug>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QQmlContext *qmlContext = ui->quickWidgetMap->rootContext();
    qmlContext->setContextProperty("marker_model", &marker_model);
    ui->quickWidgetMap->setSource(QUrl("qrc:/QML/QmlMap.qml"));
    addMarkersObject(1);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::addMarkersObject(int client_id)
{
    QSqlQuery q;
    q.prepare("SELECT terminal_ID, LATITUDE, LONGITUDE, NAME FROM OBJECTS WHERE CLIENT_ID = :client_D");
    q.bindValue(0, client_id);
    if (!q.exec()) {
        qCritical() << "Не возможно получить свойства объекта";
        return;
    }
 
    int count = 0;
    while (q.next()) {
        QString objectID = q.value(0).toString();
        QGeoCoordinate coordinate(q.value(1).toDouble(), q.value(2).toDouble());
        marker_model.insert(count, coordinate, objectID);
        count++;
    }
}
при клике на метке ID объекта в консоле я получаю.
Код
import QtQuick
import QtLocation
import QtPositioning

Rectangle {
    id: mainWindow

    Plugin {
        id: mapPlugin
        name: "osm"
        PluginParameter {
            name: "osm.mapping.providersrepository.disabled"
            value: "true"
        }
        PluginParameter {
            name: "osm.mapping.providersrepository.address"
            value: "http://maps-redirect.qt.io/osm/5.8/"
        }
    }

    Map {
        id: map
        anchors.fill: parent
        plugin: mapPlugin

        zoomLevel: 5
        property geoCoordinate startCentroid

        MapItemView {
                model: marker_model
                delegate: Marker {
                    coordinate: model.position
                    objectID: model.objectIDRole

                    MouseArea {
                        anchors.fill: parent
                        onClicked: {
                            console.log("Marker clicked. ObjectID:", model.objectIDRole);
                        }
                    }
                }
            }
        PinchHandler {
            id: pinch
            target: map
            onActiveChanged: if (active) {
                map.startCentroid = map.toCoordinate(pinch.centroid.position, false)
            }
            onScaleChanged: (delta) => {
                map.zoomLevel += Math.log2(delta)
                map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)
            }
            onRotationChanged: (delta) => {
                map.bearing -= delta
                map.alignCoordinateToPoint(map.startCentroid, pinch.centroid.position)
            }
            grabPermissions: PointerHandler.TakeOverForbidden
        }

        WheelHandler {
            id: wheel
            acceptedDevices: Qt.platform.pluginName === "cocoa" || Qt.platform.pluginName === "wayland"
                ? PointerDevice.Mouse | PointerDevice.TouchPad
                : PointerDevice.Mouse
            rotationScale: 1/120
            property: "zoomLevel"
        }

        DragHandler {
            id: drag
            target: map
            onTranslationChanged: (delta) => map.pan(-delta.x, -delta.y)
        }

        Shortcut {
            enabled: map.zoomLevel < map.maximumZoomLevel
            sequence: StandardKey.ZoomIn
            onActivated: map.zoomLevel = Math.round(map.zoomLevel + 1)
        }

        Shortcut {
            enabled: map.zoomLevel > map.minimumZoomLevel
            sequence: StandardKey.ZoomOut
            onActivated: map.zoomLevel = Math.round(map.zoomLevel - 1)
        }
    }
}
Совершенно запутался в вопросе как передать значение model.objectIDRole из карты в mainwindow для дальнейшей обработки. Понимаю что сигнал слот. Но не соображу как осуществить сединение.

Буду очень дагодарен за подсказки и примеры реализации.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2024, 10:28
Ответы с готовыми решениями:

Передать сигнал из диалогового окна с номером N в главное окно
Если описать полную конструкцию то получится. При старте попадаем в главное окно ---&gt; диалоговое...

Как заставить главное окно передать сообщение активному дочернему?
Например есть блокнот, у него есть 2 окна, главное и дочернее, я хочу написать в нем текст...

Главное окно скрыто... как развернуть все Второстепенные окна после сворачивания(разворачивается только главное невидимое
Главное окно скрыто... как развернуть все Второстепенные окна после сворачивания(разворачивается...

Метки на карте
Здравствуйте, товарищи программисты! Может, я веткой ошибся, в таком случае буду признателен,если...

0
28.02.2024, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2024, 10:28
Помогаю со студенческими работами здесь

Метки на карте Яндекс
Вопрос: Как сделать что бы при нажатие на метку(иконку на карте) появилось окно где была бы...

Маршрут + метки на карте
Вопрос. Мне надо без помощи API расположить на карте маршрут от точки А до точки Б и так же вдоль...

Создание метки на Яндекс.Карте
Добрый день! Как создать метку на Яндекс.Карте? У меня есть такой код: function init()...

Получить метки на карте Google
Как получить метки для последующего переноса к примеру на yandex maps, с этой странице...

Метки на карте как в такси
Здравствуйте, помогите пожалуйста. Как сделать чтобы в android приложение нажал на карте и у тебя...

Закрыть дочернее окно и открыть в единственном экземпляре Главное окно
Есть главная форма Main Form , там кнопка Button 1 при нажатии на Button 1 открывыется дочерняя...

При потере фокуса моё окно скрывается за главное окно
Всем привет! Пишу приложение на MFC. Создал окно на основе CMDIFrameWndEx класса (т.е. ещё одно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru