1

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)
4

1 に答える 1

0

私が行った簡単な解決策は、カーソルを移動する前に行の折り返しを無効にし、その後再び有効にすることでした。

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

非常に効率が悪いことは間違いありませんが、私の数百行の長いテキストでは、目立った遅延もなく問題なく動作します。

于 2012-05-14T15:53:47.927 に答える