Mam trochę qml, który działa jako wyjście z aplikacji (coś w rodzaju konsoli tylko do odczytu). Jest to jednak denerwujące, ponieważ podczas drukowania informacji przewija się z powrotem na górę.Zapamiętaj pozycję przewijania w elemencie QML
Na przykład, powiedzmy, że drukuję linię do mojej TextArea
co sekundę, po minucie lub mniej, będę miał wystarczająco dużo linii, że mam teraz pasek przewijania. Przewiń do dołu, a sekundę później drukowany jest wiersz tekstu, powodujący przewijanie do góry.
Pożądaną funkcją, którą chciałbym, jest automatyczne przewijanie do dołu (podobnie jak w przypadku konsoli podczas drukowania), chyba że użytkownik nadpisuje to, przewijając w górę, a następnie tekst powinien pozostać na miejscu. Mam nadzieję, że sens, tu jest jakiś kod:
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"
}
}
}
Uwaga: Nie sądzę, żeby moja Flickable nic nie robi, to była część mojego eksperymentowania, aby rozwiązać problem. Używam także funkcji addText
do drukowania w obszarze tekstowym. Prawie nic nie wiem o qml i większość tego kodu została napisana przez kogoś innego i próbuję z nim pracować. Dziękuję Ci!