我想通过两个坐标找到一个航点路径。为此,我需要从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"
}
}
答案 0 :(得分:0)
我使用此方法将数据从QML传递到C ++
首先,您需要创建一个类(MyClass)并将其连接到Qml,为此请参阅this tuto on youtube
接下来,对我来说,我使用MouseArea
将数据传输到MyClass中的c ++ MyFunction:
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
中使用Component.onCompleted
Text
,请致电MyClass.MyFunction(txt.text)