在pyqt4
中,我使用QTextEdit来显示一些日志条目。日志输出是这样的 HTML:
<div class="error">Error time and message</div>
<div class="warning">Warning time and message</div>
Some unclassified test always visible.
我希望能够动态更改每个日志级别的可见性,由具有指定类的 div 标识。 IE。如何在不手动修改文档内容的情况下使所有带有 warning 类的 div 消失?
最佳答案
一个QTextDocument
由 QTextEdit
内部使用包含QTextBlock
对象,其具有 setVisible()
方法。尝试输入 <div></div>
部分分成单独的文本 block (如果还没有;我记得每个 <p></p>
已经分配了自己的 block ),通过 QTextDocument::findBlock()
找到它们或类似的方法并切换可见性。
要更改 block 的可见性,您可能需要解析传入的内容一次,使用 QTextBlock::setUserData()
构建文档为每个 block 设置类的提示,或根据类存储 block 索引集。然后,您将文档设置为编辑小部件的内容,并循环遍历所有 block 以设置 View 模式更改时的可见性。
关于python - 动态显示/隐藏QTextEdit的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36618898/