QML-Container mit QPushButton steuern

Alles rund um die Programmierung mit Qt Quick und QML
Antworten
Tomaxx
Beiträge: 71
Registriert: 7. Juni 2017 09:05

QML-Container mit QPushButton steuern

Beitrag von Tomaxx »

Moin Zusammen

ich habe eine QML-Datei in ein QWidget geschrieben, das mir eine Karte anzeigt.

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow){
    ui->setupUi(this);

    QQuickView *view = new QQuickView();
    QWidget *container = QWidget::createWindowContainer(view, this);

    view->setSource(QUrl("karte.qml")); // Fetch this url by right clicking on your resource file.
    ui->verticalLayout->addWidget(container);
}
Die QML-Datei sieht so aus:

Code: Alles auswählen

//! [Imports]
import QtQuick 2.0
import QtPositioning 5.5
import QtLocation 5.6
//! [Imports]

Rectangle {
    y: 0
    x: 0
    width: parent.width
    height: parent.height

    //! [Initialize Plugin]
    Plugin {
        id: myPlugin
        name: "osm" // "mapboxgl", "esri", ...
    }
    //! [Initialize Plugin]

    //! [Current Location]
    PositionSource {
        id: positionSource
        property variant lastSearchPosition: locationSchubag
        active: true
        updateInterval: 120000 // 2 mins
        onPositionChanged:  {
            var currentPosition = positionSource.position.coordinate
            map.center = currentPosition
            var distance = currentPosition.distanceTo(lastSearchPosition)
            if (distance > 500) {
                // 500m from last performed pizza search
                lastSearchPosition = currentPosition
            }
        }
    }
    //! [Current Location]

    //! [PlaceSearchModel]
    property variant locationCenter: QtPositioning.coordinate( 47.582713, 8.948431)

    PlaceSearchModel {
        id: searchModel

        plugin: myPlugin

        searchTerm: "Pizza"
        searchArea: QtPositioning.circle(locationCenter)

        Component.onCompleted: update()
    }
    //! [PlaceSearchModel]

    //! [Places MapItemView]
    Map {
        id: map
        anchors.fill: parent
        plugin: myPlugin;
        center: locationCenter
        zoomLevel: 12

        MapItemView {
            model: searchModel
            delegate: MapQuickItem {
                coordinate: place.location.coordinate

                anchorPoint.x: image.width * 0.5
                anchorPoint.y: image.height

                sourceItem: Column {
                    Image { id: image; source: "marker.png" }
                    Text { text: title; font.bold: true }
                }
            }
        }
    }
    //! [Places MapItemView]

    Connections {
        target: searchModel
        onStatusChanged: {
            if (searchModel.status == PlaceSearchModel.Error)
                console.log(searchModel.errorString());
        }
    }
}
Jetzt würde ich gerne die Karte neu zentrieren an neuen Koordinaten aus zwei QLineEdit.
Die aktuellen Koordinaten in der QML sind ( 47.582713, 8.948431)

Geht das? Kann ich die property locationCenter verändern und die Kerte neu zentrieren?

Danke,
Thomas
Antworten