如果ListView包含用户定义的属性,则可以在model
的绑定中引用这些属性,但对于委托内部的任何内容,它们可以不。为什么会这样?
The docs似乎在说Component应该能够在声明它的范围内查看属性。
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
visible:true
ListView {
orientation: ListView.Vertical; height: 300; width: 100
property var myCount: 3
property var myMessage: "Hello"
Component {
id: myComp
Text {text: myMessage} // ReferenceError: myMessage is not defined
}
model: myCount // this works
delegate: myComp
}
}
(在我的实际应用程序中,ListView是一个组件(.qml文件),调用者需要传递配置委托所需的信息;而不是 文字文本,如本例所示,但有关嵌套ListView的信息。)
感谢您的帮助...
答案 0 :(得分:0)
QML中的变量具有作用域,在您使用myMessage而不引用的情况下,这些变量指示该变量属于Text项。
# ...
Component {
id: myComp
Text {text: myMessage}
}
# ...
因此解决方案是使用ListView id作为参考:
# ...
ListView {
id: lv
orientation: ListView.Vertical; height: 300; width: 100
property var myCount: 3
property var myMessage: "Hello"
Component {
id: myComp
Text {text: lv.myMessage}
}
model: myCount // this works
delegate: myComp
}
# ...