【问题标题】:Remove block from QTextDocument从 QTextDocument 中删除块
【发布时间】:2013-06-08 06:14:19
【问题描述】:
我需要从 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()
那么,如何彻底清除方块?
【问题讨论】:
标签:
python
qt
qt4
pyqt
qtextdocument
【解决方案1】:
我知道这个帖子很旧,但我最近遇到了同样的问题。连续调用 deleteChar 两次(即使我只在第一个块中这样做)对我造成了一些其他的松鼠行为。
我发现为每个块调用 removeSelectedText 然后调用 deleteChar 非常适合我正在做的事情。不知道为什么,但我希望这对将来的人有所帮助。
cursor = QTextCursor(doc.firstBlock())
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()
cursor.deleteChar()
【解决方案2】:
我认为这是一个错误,因为它只发生在第一个块中。其他块被完全删除,没有任何问题。我找到了解决方法:
cursor = QTextCursor(doc.findBlockByLineNumber(0))
cursor.select(QTextCursor.BlockUnderCursor)
cursor.deleteChar()
cursor.deleteChar()
如果你想删除第一个块,你应该这样做。如果要删除其他块,请使用您的原始代码。
也许创建新的 QTextDocument 并复制除您要删除的块之外的所有块是合适的。