问题: 我想为带有附加标签的文本实现文本编辑小部件。 我希望某些标签在某些情况下是不可见的,以免分散用户注意力。
环境: 我正在使用 PyQt
并倾向于使用 QPlainTextWidget
和 QSyntaxHighlighter
。
解决方案: 使用 QSyntaxHighlighter
,我可以针对符合我的要求的字符串设置 QTextCharFormat
。 QTextCharFormat
具有所有字体属性,如大小、颜色等。但:我没有找到隐藏文本或将其大小减小到零的选项。
我不想删除或替换标记,因为这将引入更多的代码(复制应包含标记,否则我无法使用 QSyntaxHighlighter
根据标记对余下的文本进行格式化)。
更新: 到目前为止,我找到了一个丑陋的方法。通过将 QTextFormat::FontLetterSpacing 设置为一个小值,文本将占用越来越少的空间。与透明颜色结合使用,文本就像是不可见的。
问题: 在我的测试中,这仅适用于字母间距小于 0.016%。在间距低于此值时,间距将被重置为 100%。
QTextEdit
中没有找到相应的选项。据我所知,差异仅限于滚动行为、表格、框架和像图片之类的东西。可能使文本隐藏的函数与QPlainTextEdit
相同。除此之外,在Qt中没有更高级的类。使用QScintilla将意味着使用完全不同的东西。 - m2j