我有一些 qml 作为应用程序的输出(有点像只读控制台)。但是,使用起来很烦人,因为它在打印信息时会滚动回顶部。
例如,假设我TextArea
每秒打印一行,大约一分钟后,我将有足够的行,现在我有一个滚动条。我滚动到底部,一秒钟后,打印了一行文本,使其滚动回顶部。
我想要的功能是自动滚动到底部(很像控制台打印内容时的样子),除非用户通过向上滚动来覆盖它,否则文本应该保持不变。我希望这是有道理的,这里有一些代码:
ScrollArea {
id: helpTextScrollArea
anchors.left: parent.left
anchors.right: parent.right
anchors.top: myButton.bottom
anchors.topMargin: 5
anchors.bottom: parent.bottom
visible: false
horizontalScrollBar.visible: false
onVisibleChanged: {
helpText.visible = visible
}
HelpTextArea {
id: helpText
width: parent.parent.width - helpTextScrollArea.verticalScrollBar.width
text: "Oops, no documentation."
onVisibleChanged: {
if(helpTextScrollArea.visible != visible) {
helpTextScrollArea.visible = visible
}
}
}
}
Flickable
{
id: flick
anchors.left: parent.left
anchors.right: parent.right
anchors.top: runStopButton.bottom
anchors.bottom: parent.bottom
anchors.topMargin: 5
TextArea{
id: messageArea
anchors.fill: parent
focus: true
readOnly: true
visible: !helpTextScrollArea.visible
wrapMode: TextEdit.Wrap
function addText(newText) {
text += newText + "\n"
}
}
}
注意:我不认为我的 Flickable 有任何作用,这是我尝试解决问题的一部分。另外,我使用该功能addText
打印到文本区域。我对 qml 几乎一无所知,而且大部分代码都是由其他人编写的,我正在尝试使用它。谢谢!