我需要从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()
那么,如何完全删除阻止?
答案 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并复制除要删除的块之外的所有块。