QPlainTextEdit 只为一行设置字体

Posted

技术标签:

【中文标题】QPlainTextEdit 只为一行设置字体【英文标题】:QPlainTextEdit set font for only one line 【发布时间】:2018-05-18 14:41:48 【问题描述】:

QPlainTextEdit 可以显示不同字体的文本吗? 我已经尝试过了,但似乎所有小部件的字体都会发生一段时间的变化并恢复正常:

        QFont font;
        font.setBold(true);
        ui->plainTextEdit->setFont(font);
        ui->plainTextEdit->insertPlainText("Some text:\n");
        font.setBold(false);
        ui->plainTextEdit->setFont(font);

我尝试将 QPlainTextEdit 更改为 QTextEdit 没有帮助

【问题讨论】:

【参考方案1】:

QPlainTextEditQTextEdit 都从QWidget 继承setFont,并且QWidget 一次只有一种字体类型。

但是,QTextEditexposes an interface 可以通过QTextCharFormat为文本的不同部分设置字体

就您而言,解决此问题的最简单方法应该是使用QTextEditsetCurrentFont 方法。

QFont font;
font.setBold(true);
ui->textEdit->setCurrentFont(font);
ui->textEdit->insertPlainText("Some text:\n");
font.setBold(false);
ui->textEdit->setCurrentFont(font);

(在这种非常特殊的情况下,您还可以使用setFontWeight 来选择粗体/普通字体,但对于更一般的修改setCurrentFont 更合适)

【讨论】:

以上是关于QPlainTextEdit 只为一行设置字体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QPlainTextEdit 小部件中突出显示整行文本?

我可以在 XtraGrid 上只为一行设置行单元格值吗?

如何为 QPlainTextEdit 设置文本?

QPlainTextEdit 强制重绘

如何将 QPlainTextEdit verticalScrollBar 设置为最大值?

Qt5 QPlainTextEdit怎么设置背景颜色和文字的颜色