在下面的示例中,如何读取和设置 rect1 和 rect2 中的属性 dummy?在这种情况下,我不确定如何从加载的组件中读取属性。
import QtQuick 2.15
import QtQuick.Controls 2.15
SplitView {
id: splitView
anchors.fill: parent
handle: Rectangle {
id: handleRect
property bool dummy: false
implicitWidth: 4
implicitHeight: 4
color: SplitHandle.pressed ? "#81e889"
: (SplitHandle.hovered ? Qt.lighter("#c2f4c6", 1.1) : "#c2f4c6")
Rectangle: {
visible: dummy
...
}
}
Rectangle {
id: rect1
implicitWidth: 150
color: "#444"
Component.onCompleted: {
handleRect.dummy = true // Does not work
}
}
Rectangle {
id: rect2
implicitWidth: 50
color: "#666"
}
}
由于 TypeError:无法读取未定义的属性“dummy”,因此在 rect1 或 2 中使用handleRect.dummy 不起作用。
因为您永远无法保证顺序,所以您不能说
SplitView.handle
将在您的 SplitView
孩子之前存在。因此,无法保证Component.onCompleted
中的代码能够正常工作。
相反,如果您要泡沫化您的财产,例如
SplitView {
id: splitView
property bool dummy: false
handle: Rectangle { /* ... */ }
Rectangle { id: rect1 /* ... */ }
Rectangle { id: rect2 /* ... */ }
}
您可以保证 SplitView 的子级和句柄都可以读取/写入它。
您可以在线尝试!