Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 访问ListView委托';从C++;_C++_Qt_Listview_Location_Qml - Fatal编程技术网

C++ 访问ListView委托';从C++;

C++ 访问ListView委托';从C++;,c++,qt,listview,location,qml,C++,Qt,Listview,Location,Qml,我想通过两个坐标找到一个航路点路径。为了做到这一点,我需要从C++访问QML属性。我如何访问下面的属性 import QtLocation 5.6 import QtPositioning 5.6 import QtQml 2.2 Item { Plugin { id:osmPlugin name:"osm" } RouteModel { id: routeModel plugin: osm

我想通过两个坐标找到一个航路点路径。为了做到这一点,我需要从C++访问QML属性。我如何访问下面的属性

import QtLocation 5.6
import QtPositioning 5.6
import QtQml 2.2
Item {
    Plugin
    {
        id:osmPlugin
        name:"osm"
    }

    RouteModel
    {
        id: routeModel
        plugin: osmPlugin
        autoUpdate: true
        query: aQuery
    }
    RouteQuery
    {
        id: aQuery

    }

    property  list<string> rectx

    Repeater
    {
        id: listview
        model: routeModel.status == RouteModel.Ready ? routeModel.get(0).segments : null
        visible: model ? true : false
        delegate: Row {
            property bool hasManeuver : modelData.maneuver && modelData.maneuver.valid
            property RouteSegment routeSegment: modelData

            Text
            {
                id:tt2
                text: routeSegment.path // I need to access this value              
            }

        }   

    }

    Location
    {
        id:l1
        coordinate
        {
            latitude:0.0
            longitude:0.0
        }
    }
    Location
    {
        id:l2
        coordinate
        {

            latitude:0.0
            longitude:0.0
        }
    }

    property string someString
    property string someString1
    property string lang
    property string lang1


    function myQmlFunction(coord)                                         

    {
        someString=coord
        someString1=coord
        lang= someString.substring(0,6)
        lang1= someString1.substring(10,16)
        l1.coordinate.longitude = lang
        l1.coordinate.latitude= lang1
        l2.coordinate.longitude = lang
        l2.coordinate.latitude= lang1
        aQuery.addWaypoint(l1.coordinate,l2.coordinate)
        aQuery.travelModes=RouteQuery.CarTravel
        aQuery.routeOptimizations=RouteQuery.ShortestRoute
        routeModel.update()
        console.log("Got message:",)
        return "some return value"
    }

}
导入位置5.6
导入QT5.6
导入qtl2.2
项目{
插件
{
id:osmPlugin
名称:“osm”
}
路线模型
{
id:routeModel
插件:osmPlugin
自动更新:true
查询:aQuery
}
路线
{
id:水渠
}
属性列表rectx
中继器
{
id:listview
模型:routeModel.status==routeModel.Ready?routeModel.get(0)。段:null
可见:模型?对:错
代表:世界其他地区{
属性bool hasmourge:modelData.maneuver&&modelData.maneuver.valid
属性RouteSegment RouteSegment:modelData
文本
{
id:tt2
text:routeSegment.path//我需要访问此值
}
}   
}
地方
{
id:l1
坐标
{
纬度:0.0
经度:0.0
}
}
地方
{
id:l2
坐标
{
纬度:0.0
经度:0.0
}
}
属性字符串someString
属性字符串someString1
属性字符串lang
属性字符串lang1
函数myQmlFunction(coord)
{
someString=coord
someString1=coord
lang=someString.substring(0,6)
lang1=someString1.子串(10,16)
l1.coordinate.longitude=lang
l1.坐标纬度=lang1
l2.coordinate.longitude=lang
l2.坐标纬度=lang1
aQuery.addWaypoint(l1.坐标,l2.坐标)
aQuery.travelModes=RouteQuery.CarTravel
aQuery.routeOptimizations=RouteQuery.ShortestRoute
routeModel.update()
log(“收到消息:,)
返回“某些返回值”
}
}

< /代码> 我使用此方法将QML数据传递到C++ +/p> 首先,您需要创建一个类(MyClass)并将其连接到Qml,为此请参见

<> MyClass,我用<代码> MouseArea <代码>在C++中传输数据到C++中:
delegate: Rectangle {
    width: parent.width
    Text {
        id: txt
        text: modelData
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            listView.currentIndex = index
            label.text = MyClass.MyFunction(txt.text)
        }
    }
}

如果你不想使用
MouseArea
Text
中使用
Component.onCompleted
,然后调用
MyClass.MyFunction(txt.Text)

@Yoann,从帖子中删除OP的问题会让这看起来有点苛刻和粗鲁(并不是说它一开始的措辞很严格)你确定你需要从C++访问它吗?这样做通常是一个糟糕的设计决策。你想要达到什么?因为我的数据库,程序和UI部件在C++中。所以ı选择了这种方式,但ı认为在qml中移动数据库