首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从QTextDocument中删除数据块

从QTextDocument中删除数据块
EN

Stack Overflow用户
提问于 2013-06-08 14:14:20
回答 2查看 1.8K关注 0票数 0

我需要从QTextDocument中删除一些段落。我尝试过这个主题中的代码:Remove a line/block from QTextEdit,但QTextDocument.drawContents在删除块的位置输出空行。

代码语言:javascript
复制
# 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()

那么,如何彻底移除阻塞呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-08 17:22:59

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

代码语言:javascript
复制
cursor = QTextCursor(doc.findBlockByLineNumber(0))
cursor.select(QTextCursor.BlockUnderCursor)
cursor.deleteChar()
cursor.deleteChar()

如果要删除第一个块,则应执行此操作。如果要删除其他块,请使用原始代码。

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

票数 1
EN

Stack Overflow用户

发布于 2014-06-07 05:15:11

我知道这个帖子很旧,但我最近遇到了同样的问题。连续两次调用deleteChar (即使我只在第一个块中调用)会导致其他一些奇怪的行为。

我发现,对每个块调用removeSelectedText,然后调用deletaChar,对于我正在做的事情来说,效果非常好。不知道为什么,但我希望这对未来的人有帮助。

代码语言:javascript
复制
cursor = QTextCursor(doc.firstBlock())
cursor.select(QTextCursor.BlockUnderCursor)
cursor.removeSelectedText()
cursor.deleteChar()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16996679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档