Я делаю виджет терминала. Я хочу, чтобы 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. Я попытался отладить привязку l oop с помощью export QT_LOGGING_RULES="qt.qml.binding.removal.info=true"
, которая вышла чистой. Я просмотрел исходный код Flickable
и не думаю, что виноват какой-либо из методов.
Является ли привязка contentY
правильным способом делать то, что я хочу? Почему моя привязка не соблюдается?