我可以显示当前选择QML ListView但类似的东西在TreeView中不起作用。
部分问题是TreeView无法识别在index
的情况下传递给委托的ListView
。我试过styleData.index
,但这也不起作用。
rowDelegate: Item {
id: row_delegate
height: 40
Rectangle {
id: rectid
anchors.fill: parent
MouseArea {
id: mouse_area
anchors.fill: parent
onClicked: {
console.log("Row clicked " + rectid.styleData.index)
}
}
}
}
输出结果为:
qml:行点击未定义
答案 0 :(得分:0)
正如documentation所述,您在命名空间styleData
中有一组属性,可以在委托中用于几乎相同的目的。
例如,您可以设置属于您的委托的标签的text属性,如下所示:
text: styleData.value
styleData.value
的位置(文档摘录):
此商品的值或文字
同样,你有:
styleData.pressed - 按下项目时为true
styleData.index - 模型中当前项的QModelIndex
styleData.hasChildren - 如果当前项的模型索引具有或可以有子项
,则为true
依此类推......请参阅文档以获取完整列表。
还要注意文档末尾的注释:
注意:出于性能原因,可以跨多个表行回收已创建的委托。这意味着当您使用诸如styleData.row或model之类的隐式属性时,这些值可以在构造委托之后更改。这意味着您不应该假设在调用Component.onCompleted时修复内容,而是依赖于对这些属性的绑定。