python - 动态显示/隐藏QTextEdit的一部分

标签 python qt pyqt

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 消失?

最佳答案

一个QTextDocumentQTextEdit 内部使用包含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/

相关文章:

python - 如何构建代码以便能够启动可以相互杀死/替换的任务

pyqt - 如何在 PyQt5 中获取 QEvent 的字符串名称

python - PyQt5 自定义 QAction 类

python - 为什么 range() 不返回列表?

python - 如何使用 pandas 在 ndarray 上创建索引

多列中的 QTreeView/QAbstractItemModel 子树

qt - ContainsMouse 在父更改时给出了错误的值

qt - 为什么QProcess信号readyReadStandardOutput()发出两次?

python - 将 QPixmap 转换为灰度图

Python 类、实例变量和访问器方法