我想将光标放在由其行号指定的QPlainTextEdit
中的行的开头。问题是我有“真实”的行号,即行和开头之间的\n
的数量,而光标似乎使用“虚拟”行号,即包括textedit完成的换行。
这意味着以下内容无法正常运行:
old_line = textedit.textCursor().blockNumber()
line = token.line
diff = line - old_line
move = QtGui.QTextCursor.Down if diff >= 0 else QtGui.QTextCursor.Up
for _ in range(abs(diff)): textedit.moveCursor(move, QtGui.QTextCursor.MoveAnchor)
答案 0 :(得分:0)
我使用的简单解决方案是在移动光标之前停用换行并再次激活它:
textedit.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
# above code in between here
textedit.setLineWrapMode(QtGui.QPlainTextEdit.WidgetWidth)
大多数肯定是非常低效的,但对于我的几百行长文本,它工作正常,没有任何明显的滞后。