首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Qt c++代码的双重传递给QML代码?

如何将Qt c++代码的双重传递给QML代码?
EN

Stack Overflow用户
提问于 2017-04-06 14:16:52
回答 1查看 729关注 0票数 0

我在Qt中有这个代码

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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 }
                }
            }
        }
    }
}

在qml代码属性中,双纬度和经度设置地图上的视图,但map显示位置纬度=0,经度=0

如果我在qml代码中设置了正确的坐标,一切都能正常工作,那么如何从c++代码中插入这个值,从而使地图显示我的城市呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 14:42:29

使用Q_PROPERTY会更好。公开C++的属性

我让它这样运作:

main.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43257836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档