C++ 访问ListView委托';从C++;
我想通过两个坐标找到一个航路点路径。为了做到这一点,我需要从C++访问QML属性。我如何访问下面的属性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
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中移动数据库