在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标识。即如何在不手动修改文档内容的情况下使所有带有警告类的div消失?
答案 0 :(得分:1)
QTextDocument
内部使用的QTextEdit
包含QTextBlock
个对象,这些对象具有setVisible()
方法。尝试将<div></div>
部分放入单独的文本块中(如果它们已经不存在;我记得每个<p></p>
已经分配了自己的块),请通过QTextDocument::findBlock()
找到它们或类似的方法并切换可见性。
要更改块的可见性,您可能需要解析传入的内容一次,使用QTextBlock::setUserData()
构建文档,为每个块设置类的提示,或者存储块的集合索引取决于类。然后将文档设置为编辑窗口小部件的内容,并循环浏览所有块以设置视图模式更改时的可见性。
答案 1 :(得分:0)
尝试QTextEdit
是否接受类定义:
.warning {
text-color: transparent;
text-size: 0;
}
或类似。
您可以将warning
类创建为不可见且非常小甚至零大小!或者将div的高度设置为0!?
您可能需要根据需要修改此类定义,并在测试前添加并在QTextEdit
中重置。
不知道这是否真的有效,但这是我能想到的唯一方法。