QTextEdit 中的文本失真

Posted

技术标签:

【中文标题】QTextEdit 中的文本失真【英文标题】:Text in QTextEdit is distorted 【发布时间】:2016-12-27 22:04:31 【问题描述】:

我有一个QTextEdit,我想在其中设置一些由 ASCII Art 文本渲染器生成的文本 (unicode)。一切正常,除了QTextEdit 扭曲了文本。屏幕截图显示了在 QTextEdit 中通过 setText() 设置的相同 unicode 文本变量,并记录到控制台,在那里它可以正确显示。



我是否使用QTextEditQPlainTextEdit,或者我是否通过setText(ascii_art_text)setPlainText(ascii_art_text) 设置文本似乎并不重要。我在这里使用 PySide,但我怀疑在这种情况下并没有太大的兴趣。


任何想法如何解决这种失真?

【问题讨论】:

【参考方案1】:

从您的示例看起来,您的 QTextEdit 似乎没有使用终端和文本编辑器通常使用的等宽字体。使用等宽字体创建QFont。例如,

# Specific Windows monospaced font.
font = QFont("Courier New")

根据 Torsten Marek 在How to specify monospace fonts for cross platform Qt applications? 中的answer,您可以获得跨平台等宽字体:

font = QFont("Monospace")
font.setStyleHint(QFont.TypeWriter)

确定字体后,将其分配给您的QTextEdit

text_edit.setCurrentFont(font)

【讨论】:

以上是关于QTextEdit 中的文本失真的主要内容,如果未能解决你的问题,请参考以下文章

QTextEdit 中的不可见文本

具有不同文本颜色的 QTextEdit (Qt / C++)

Qt中的QLineEdit,QTextEdit和QPlainTextEdit的区别

在 QTextEdit 中使用富文本

QT中怎样提取QTextEdit文本框中的内容?

文本编辑框QTextEdit