【问题标题】:How to scroll to line in QML TextArea?如何滚动到 QML TextArea 中的行?
【发布时间】:2019-06-18 09:50:48
【问题描述】:

如何滚动到多行富文本 QML TextArea 中的特定行?有 positionToRectangle 但它只接受一个似乎不适合多行文本的 int 位置。

【问题讨论】:

    标签: scroll qml textarea


    【解决方案1】:

    我建议尝试根据行号乘以行高来计算位置。您可以像这样计算一行的高度:

    (textArea.implicitHeight - 2 * textArea.textMargin) / textArea.lineCount

    这可能会帮助您使用positionToRectangle

    编辑:事后想到,您是否尝试过设置cursorPosition

    【讨论】:

    • 设置cursorPosition也有同样的问题,需要知道position。但总的来说,您的想法是有道理的,谢谢!
    【解决方案2】:

    TextArea 本身不可滚动(参见 Scrollable TextArea):

    如果您想让 TextArea 可滚动,[...] 可以将其放置在 ScrollView 中。

    那么你只需要设置你的contentItemcontentY

    ScrollView {
        id: view
        width: parent.width
        height: 60
        TextArea  {
            text: "A\nB\nC\nD\nE\nF\nG\nH\nI\nJ\nK\nL"
        }
    }
    
    Button {
        text: "scroll"
        onClicked: view.contentItem.contentY += 10
    }
    

    【讨论】:

    • 问题是要弄清楚要滚动哪个contentY
    • 确实如此。然后您可以结合类似于 MarPan 答案的计算,根据lineCountcontentHeight 分配正确的contentY
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 2020-04-19
    • 2020-07-23
    相关资源
    最近更新 更多