0

我可以像这样滚动一行到视图中:

editor = QTextEdit()

scrollCursor = QTextCursor(editor.document())
scrollCursor.setPosition(pos)
editor.setTextCursor(scrollCursor) # You may want to save the previous cursor...
editor.ensureCursorVisible()

但这会最小化滚动:新位置通常位于小部件的顶部或底部,我必须手动滚动才能查看上下文。

如何确保 5 行上下文始终可见?

4

1 回答 1

0

只需将光标移动几行并调用ensureCursorVisible()两次:

scrollCursor = QTextCursor(editor.document())
contextLines = 5

scrollCursor.setPosition(pos)
scrollCursor.movePosition(QTextCursor.Up, QTextCursor.MoveAnchor, contextLines)
editor.setTextCursor(scrollCursor)
editor.ensureCursorVisible()

scrollCursor.setPosition(pos)
scrollCursor.movePosition(QTextCursor.Down, QTextCursor.MoveAnchor, contextLines)
editor.setTextCursor(scrollCursor)
editor.ensureCursorVisible()

# Finishing touch: Select the line
scrollCursor.setPosition(pos)
scrollCursor.movePosition(QTextCursor.StartOfLine, QTextCursor.MoveAnchor)
scrollCursor.movePosition(QTextCursor.EndOfLine, QTextCursor.KeepAnchor)
editor.setTextCursor(scrollCursor)
于 2020-04-19T12:30:47.810 回答