2017-04-06 8 views
0

私はQtのQt C++コードからQMLコードに二重を渡すには?

int main(int argc, char *argv[]) { 
    QGuiApplication app(argc,argv); 
     QQuickView view; 
     QUrl q(QStringLiteral("QML:///places_map.qml")); 
     view.setSource(QUrl(QStringLiteral("qrc:///places_map.qml"))); 
     //I've tried this to init qml properties 
     QObject *object = view.rootObject(); 
     object->setProperty("latitude", 48.4656371); 
     object->setProperty("longitude", 31.04900455); 

     QQuickItem *item = view.rootObject(); 
     item->setProperty("device_latitude", 48.4656371); 
     item->setProperty("device_longitude", 35.04900455); 
} 

にこのコードを持っており、私のQMLファイル:QMLコードのプロパティで

import QtQuick 2.0 
import QtPositioning 5.5 
import QtLocation 5.6 

Rectangle { 
    width: 720 
    height: 480 

    property double latitude: 0 
    property double longitude: 0 
    property double device_latitude: 0 //48.4656371 
    property double device_longitude: 0 //35.54900455 

    property variant location: QtPositioning.coordinate(latitude, longitude) 
    property variant deviceLocation: QtPositioning.coordinate(device_latitude, device_longitude) 

    Plugin { 
     id: myPlugin 
     name: "osm" 
    } 
    PlaceSearchModel { 
      id: searchModel 

      plugin: myPlugin 

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

      Component.onCompleted: update() 
     } 
    Map { 
     id: map 
     anchors.fill: parent 
     plugin: myPlugin; 
     center: location 
     zoomLevel: 13 

     MapItemView { 
      model: searchModel 
      delegate: MapQuickItem { 
       coordinate: deviceLocation //QtPositioning.coordinate(device_latitude, device_longitude) 

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

       sourceItem: Column { 
        Image { id: image; source: "marker.png" } 
        Text { text: title; font.bold: true } 
       } 
      } 
     } 
    } 
} 

ダブル緯度と経度は、地図 上のビューを設定するが、マップがplace with latitude = 0 and longtitude = 0

た場合を示しています私はqmlコードのすべての正しい座標を設定します。 マップに私の都市が表示されるように、C++コードからこの値をどのように初期化できますか?

答えて

0

Q_PROPERTYを使用する方が良いでしょう。 Exposing Attributes of C++

私は、それはこのように取り組んでいます

main.cppに

#include <QGuiApplication> 
#include <QQmlApplicationEngine> 
#include <QQuickItem> 
#include <QQuickView> 

int main(int argc, char *argv[]) 
{ 
    QGuiApplication app(argc, argv); 

    QQuickView view; 
    view.setSource(QUrl(QStringLiteral("qrc:/main.qml"))); 

    QQuickItem *item = view.rootObject(); 
    item->setProperty("number", 22.002); 
    view.show(); 
    return app.exec(); 
} 

main.qml

import QtQuick 2.4 
import QtQuick.Window 2.2 

Rectangle{ 
    visible: true 
    width: 640 
    height: 480 
    property double number : 0 

    Text { 
     id: textEdit 
     text: number 
     verticalAlignment: Text.AlignVCenter 
     anchors.top: parent.top 
     anchors.horizontalCenter: parent.horizontalCenter 
     anchors.topMargin: 20 
    } 
} 
+0

は 緯度と経度が機能するようになりました、あなたの答えに感謝よく前のC++コード 私はトリ他のデータ(device_latituteとdevice_longtitude)のコードを編集しましたが、うまくいきませんでした。更新されたコードを見てください。 – Dmitry

+0

#includesがありませんか?私の更新された答えを見てください。 –

関連する問題