【问题标题】: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 并复制除您要删除的块之外的所有块是合适的。

      【讨论】:

        猜你喜欢
        • 2016-04-16
        • 2016-01-05
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-22
        • 2021-06-15
        • 1970-01-01
        相关资源
        最近更新 更多