我正在制作一个终端小部件。我希望在更新Flickable
时向下滚动到最新的输入TextArea.text
。我的代码如下所示。
ColumnLayout {
anchors.fill: parent
Flickable {
id: scroller
clip: true
contentY: contentHeight - height
onContentYChanged: {
console.log("contentY:", contentY)
}
TextArea.flickable: TextArea {
id: textArea
Layout.fillWidth: true
}
Layout.fillWidth: true
Layout.fillHeight: true
}
RowLayout {
id: prompt
Label {
text: " > $ "
}
TextField {
id: textInput
Layout.fillWidth: true
}
}
}
当我运行它时,我看到contentY
它在我的绑定设置后立即被覆盖:
qml: contentY: 1498
qml: contentY: 0
qml: contentY: 1517
qml: contentY: 0
我检查以确保我的绑定没有将其设置为 0。我尝试使用 调试绑定循环export QT_LOGGING_RULES="qt.qml.binding.removal.info=true"
,结果很干净。我查看了源代码,Flickable
但我认为没有任何方法是罪魁祸首。
绑定contentY
是做我想做的事情的正确方法吗?为什么我的绑定不被尊重?