Помните положение прокрутки в элементе QML

У меня есть некоторый 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, и большая часть этого кода была написана кем-то другим, и я пытаюсь с ним работать. Спасибо!

6
задан user869525 6 June 2012 в 12:58
поделиться