从QTextDocument中删除块

时间:2013-06-08 06:14:20

标签: python qt qt4 pyqt qtextdocument

我需要从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()

那么,如何完全删除阻止?

2 个答案:

答案 0 :(得分:2)

我知道这个帖子已经老了,但我最近遇到了同样的问题。连续两次调用deleteChar(即使我只为第一个块执行)会给我带来一些其他的怪异行为。

我发现调用removeSelectedText后跟每个块的deletaChar完全适用于我正在做的事情。不知道为什么,但我希望这有助于将来。

cursor = QTextCursor(doc.firstBlock())
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()
cursor.deleteChar()

答案 1 :(得分:1)

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

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

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

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