Как прокрутить строку с контекстом в поле зрения - PullRequest
0 голосов
/ 19 апреля 2020

Я могу прокрутить строку в поле зрения следующим образом:

editor = QTextEdit()

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

, но это делает минимальную прокрутку: новая позиция часто находится вверху или внизу виджета, и мне нужно прокрутить вручную, чтобы увидеть context.

Как я могу убедиться, что 5 строк контекста всегда видны?

1 Ответ

0 голосов
/ 19 апреля 2020

Просто наведите курсор на несколько строк и дважды наберите 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)
...