将光标定位在特定行

时间:2012-05-14 13:25:57

标签: python qt qt4 pyqt

我想将光标放在由其行号指定的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)

1 个答案:

答案 0 :(得分:0)

我使用的简单解决方案是在移动光标之前停用换行并再次激活它:

textedit.setLineWrapMode(QtGui.QPlainTextEdit.NoWrap)
# above code in between here
textedit.setLineWrapMode(QtGui.QPlainTextEdit.WidgetWidth)

大多数肯定是非常低效的,但对于我的几百行长文本,它工作正常,没有任何明显的滞后。