2012-05-14 52 views
1

我想將光標放在由其行號指定的QPlainTextEdit中的一行的開始位置。問題是我有「真實」行號,即行和起始點之間的數目爲\n,而光標似乎使用「虛擬」行號,即包括由文本標記完成的行換行。將光標定位在特定行

這意味着以下不能正常工作:

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

簡單的解決方案,我有去是移動光標,之後再次啓動之前先停用自動換行:

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

最肯定是非常低效的,但對於我幾百行長的文本,它工作正常,沒有任何明顯的滯後。

相關問題