0

我需要从 QTextDocument 中删除一些段落。我已经尝试过此主题的代码:Remove a line/block from QTextEdit,但 QTextDocument.drawContents 输出空行代替已删除的块。

# create sample document
doc = QTextDocument()
cursor = QTextCursor(doc)
cursor.movePosition(QTextCursor.End)
cursor.insertText("First line\nSecond line\nThird line")

# now remove first line
cursor = QTextCursor(doc.findBlockByLineNumber(0))
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()

那么,如何彻底清除阻塞呢?

4

2 回答 2

2

我知道这个线程很旧,但我最近遇到了同样的问题。连续两次调用 deleteChar (即使我只为第一个块调用)对我造成了一些其他的松鼠行为。

我发现为每个块调用 removeSelectedText 后跟 deletaChar 非常适合我正在做的事情。不知道为什么,但我希望这对未来的人有所帮助。

cursor = QTextCursor(doc.firstBlock())
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()
cursor.deleteChar()
于 2014-06-06T21:15:10.767 回答
1

我认为这是一个错误,因为它只发生在第一个块中。其他块被完全删除,没有任何问题。我找到了解决方法:

cursor = QTextCursor(doc.findBlockByLineNumber(0))
cursor.select(QTextCursor.BlockUnderCursor)
cursor.deleteChar()
cursor.deleteChar()

如果你想删除第一个块,你应该这样做。如果要删除其他块,请使用您的原始代码。

也许创建新的 QTextDocument 并复制除要删除的块之外的所有块是合适的。

于 2013-06-08T09:22:58.660 回答