我在QPlainTextEdit,其中每行開頭10位一些文字:QTextCursor和beginEditBlock
line1
line2
line3
line4
於是,我選擇幾行,在一個循環中我想刪除所有選中的行前兩個空間:
cursor.beginEditBlock();
for (QTextBlock block = startBlock; block != endBlock; block = block.next()) {
cursor.setPosition(block.position());
cursor.setPosition(block.position() + 2, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
}
cursor.endEditBlock();
的問題是,「損害」最後選定的行上面的代碼 - 因爲它去掉某種結束行標誌的 - 當我想跳到最後一行光標結束在第一個字符和第二個字符之間移動到它下面的行。即使編輯後的選擇也不能正確顯示 - 除最後一行之外的所有行都將選擇指示符擴展到右側窗口邊緣,最後一行的指示符只與行一樣寬。
line1 < 1. selected lines, run the code
line2 <
line3 < < 2. here I jump to end of line
| line4
^ 3. cursor appears here
當我刪除beginEditBlock()
和endEditBlock()
一切工作正常。
請問,有誰知道爲什麼會發生這種情況?
你有沒有找到一個解決辦法?我想我可能會遇到PyQt中的相同問題:http://stackoverflow.com/questions/29320202/ – 2015-03-28 17:33:14
@MichaelClerx IIRC它被固定在5.3.0,你可以看到[這裏]的更改(https:// codereview.qt-project.org/#/c/83583/)。 – 2015-03-29 16:30:49
謝謝!我已經要求他們在4.8中修復它! – 2015-03-29 16:41:40