【发布时间】:2019-06-18 09:50:48
【问题描述】:
如何滚动到多行富文本 QML TextArea 中的特定行?有 positionToRectangle 但它只接受一个似乎不适合多行文本的 int 位置。
【问题讨论】:
如何滚动到多行富文本 QML TextArea 中的特定行?有 positionToRectangle 但它只接受一个似乎不适合多行文本的 int 位置。
【问题讨论】:
我建议尝试根据行号乘以行高来计算位置。您可以像这样计算一行的高度:
(textArea.implicitHeight - 2 * textArea.textMargin) / textArea.lineCount
这可能会帮助您使用positionToRectangle。
编辑:事后想到,您是否尝试过设置cursorPosition?
【讨论】:
cursorPosition也有同样的问题,需要知道position。但总的来说,您的想法是有道理的,谢谢!
TextArea 本身不可滚动(参见 Scrollable TextArea):
如果您想让 TextArea 可滚动,[...] 可以将其放置在 ScrollView 中。
那么你只需要设置你的contentItem的contentY:
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!
lineCount 和contentHeight 分配正确的contentY 值