我一直试图绕过这一段时间,并想出了几个黑客,但似乎没有一个是正确的方法。希望这是有道理的。假设我有三个qml文件。
首先是QML:
...
ListView {
id: patientList
model: patientModel
delegate: E3DPatientListItem {
onClicked: {
if (patientList.currentIndex !== index)
{
patientList.currentIndex = index
detailStackView.push("DetailPanel.qml",
{ "view": view, "ptInfo": model })
...
DetailPanel:
...
Page {
property QtObject ptInfo
Timeline {
ptInfo: ptInfo // <- how do I pass this to Timeline?
...
Timeline.qml
...
Item {
property QtObject ptInfo // <- always null :(
...
答案 0 :(得分:1)
...
Page {
property QtObject ptInfo
Timeline {
ptInfo: ptInfo // <- how do I pass this to Timeline?
...
您认为ptInfo: ptInfo
正在实现什么目标?您将属性绑定到自己的标识符。
也许尝试不使用相同的标识符来避免阴影,或者提供Page
和id
然后ptInfo: pageid.ptInfo
。只要对象公开了父属性,parent.ptInfo
也会起作用,请记住QtObject
不。
但是,您并不需要在QtObject ptInfo
中拥有属性Timeline.qml
,只要时间轴始终在页面内实例化,您就可以直接从ptInfo
访问由于动态范围,在时间轴内。请注意,动态范围属性仅适用于在特定qml文件的根元素中定义的属性:
// Obj1.qml
Item {
property int test: 7
Obj2{}
}
// Obj2.qml
Item {
Component.onCompleted: console.log(test) // it will work
}