我需要从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()那么,如何彻底移除阻塞呢?
发布于 2013-06-08 17:22:59
我认为这是一个bug,因为它只发生在第一个代码块中。其他块被完全删除,没有任何问题。我找到了一种解决方法:
cursor = QTextCursor(doc.findBlockByLineNumber(0))
cursor.select(QTextCursor.BlockUnderCursor)
cursor.deleteChar()
cursor.deleteChar()如果要删除第一个块,则应执行此操作。如果要删除其他块,请使用原始代码。
也许创建新的QTextDocument并复制除要删除的块之外的所有块是合适的。
发布于 2014-06-07 05:15:11
我知道这个帖子很旧,但我最近遇到了同样的问题。连续两次调用deleteChar (即使我只在第一个块中调用)会导致其他一些奇怪的行为。
我发现,对每个块调用removeSelectedText,然后调用deletaChar,对于我正在做的事情来说,效果非常好。不知道为什么,但我希望这对未来的人有帮助。
cursor = QTextCursor(doc.firstBlock())
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()
cursor.deleteChar()https://stackoverflow.com/questions/16996679
复制相似问题