Qt 如何获取与QML中表视图中单击的行关联的ListElement?
我在QML中定义了一个Qt 如何获取与QML中表视图中单击的行关联的ListElement?,qt,qml,Qt,Qml,我在QML中定义了一个TableView,它显然有多行由ListModel填充 我想获取与双击的行关联的liselement 我将表视图的rowDelegate定义为: rowDelegate: Rectangle { color: "#D3D3D3" height: 30 MouseArea { anchors.fill: parent onDoubleClicked: { console.log("table v
TableView
,它显然有多行由ListModel
填充
我想获取与双击的行关联的liselement
我将表视图的rowDelegate
定义为:
rowDelegate: Rectangle {
color: "#D3D3D3"
height: 30
MouseArea {
anchors.fill: parent
onDoubleClicked: {
console.log("table view row clicked...")
// How to fetch the ListElement associated with the row
// and return it for use by another module?
}
}
}
我的评论非常强调我要寻找的内容。在您的委托范围内,您可以使用
模型
伪属性来获取关联的列表元素
(或通过该委托显示的任何其他数据)。您可以将其视为对原始数据项的引用。它具有列表元素
的所有属性(例如文本
或颜色
或其他任何属性)以及索引
属性(列表模型或任何其他模型中的项目索引)。在代理的范围内,您可以使用模型
伪属性来获取关联的列表元素
(或通过该代理显示的任何其他数据段)。您可以将其视为对原始数据项的引用。它具有列表元素
的所有属性(例如文本
或颜色
或其他任何属性)以及索引
属性(列表模型或任何其他模型中的项目索引).您甚至不需要鼠标earea
来处理代理中的单击
TableView
已经有一个信号,您可以使用该信号从单击的行索引检索模型数据:
TableView {
model: ListModel {
ListElement {
name: "name 1"
}
ListElement {
name: "name 2"
}
}
TableViewColumn {
title: "name"
delegate: Text {
text: model.name
}
}
rowDelegate: Rectangle {
color: "#D3D3D3"
height: 30
// no MouseArea
}
// handle the click directly in TableView
onDoubleClicked: {
const element = model.get(row)
console.error("doubleClicked on", element.name)
}
}
您甚至不需要使用
MouseArea
来处理代理中的单击
TableView
已经有一个信号,您可以使用该信号从单击的行索引检索模型数据:
TableView {
model: ListModel {
ListElement {
name: "name 1"
}
ListElement {
name: "name 2"
}
}
TableViewColumn {
title: "name"
delegate: Text {
text: model.name
}
}
rowDelegate: Rectangle {
color: "#D3D3D3"
height: 30
// no MouseArea
}
// handle the click directly in TableView
onDoubleClicked: {
const element = model.get(row)
console.error("doubleClicked on", element.name)
}
}
从文档中-模型索引作为可访问的索引属性公开,因此您可以使用@folibis获取元素。谢谢。我如何获得单击的行的索引?似乎有一些分散的文档围绕着它,但可能只有我一个人。请看。索引公开给每个委托以及
liselement
属性。请阅读文档很好。总是从文档开始!:-)从文档开始-模型索引作为可访问的索引属性公开,因此您可以使用@folibis获取元素。但是,如何单击该行的索引?似乎有分散的文档围绕着这个,但可能只有我。看到了吗。向每个委托公开的索引以及liselement
属性。只要好好阅读文档就行了。始终从文档开始!:-)谢谢,那正是我想要的。谢谢,那正是我想要的。