gpt4 book ai didi

qt - 使用 QSyntaxHighlighter 隐藏文本

转载 作者:行者123 更新时间:2023-12-04 13:20:28 25 4
gpt4 key购买 nike

问题:我想为带有附加标签的文本实现一个文本编辑小部件。
我希望某些标签在某些情况下不可见,以免分散用户的注意力。

环境:我正在使用 PyQt并且更喜欢使用 QPlainTextWidgetQSyntaxHighlighter .

联系方式:QSyntaxHighlighter我可以设置QTextCharFormat对于符合我要求的字符串。 QTextCharFormat已经给了我所有的字体属性,比如大小、颜色等。但是:我还没有找到隐藏文本或将其大小减小为零的选项。

我不想删除或替换标签,因为这会引入更多代码(复制应该包含标签,如果没有我不能使用 QSyntaxHighlighter 根据标签格式化剩余的文本)。

更新:到目前为止,我发现了一个丑陋的黑客。通过将 QTextFormat::FontLetterSpacing 设置为一个较小的值,文本将占用越来越少的空间。结合透明颜色,文本就像是不可见的。

问题:在我的测试中,这仅适用于低至 0.016% 的字母间距。下面的间距被重置为 100%。

最佳答案

您可以使用底层QTextDocument为了这。它由可以使用 setVisible 打开和关闭可见性的块组成。 .使用 QTextCursor插入文本和新块并切换可见性。作为奖励,复制功能无论如何都会复制不可见块的内容。

备注:见 documentationQTextCursor想要查询更多的信息。在 another question据报道,设置可见性在 QTextEdits 上不起作用.

例子:

from PyQt5 import QtWidgets, QtGui

app = QtWidgets.QApplication([])

w = QtWidgets.QPlainTextEdit()
w.show()

t = QtGui.QTextCursor(w.document())
t.insertText('plain text')
t.insertBlock()
t.insertText('tags, tags, tags')
t.block().setVisible(False)

print(w.document().toPlainText())

app.exec_()

关于qt - 使用 QSyntaxHighlighter 隐藏文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com