c++ 在QplainTextEdit 中 为 一段文字 设置 字体颜色 和字体大小 并且不改变其他文字的格式
时间: 2023-06-19 18:36:10 浏览: 65
你可以使用 QSyntaxHighlighter 实现在 QPlainTextEdit 中设置特定文本的格式,以下是一个设置字体颜色和字体大小的示例代码:
```cpp
// 自定义高亮器类 MyHighlighter
class MyHighlighter : public QSyntaxHighlighter
{
public:
MyHighlighter(QTextDocument *parent = nullptr) : QSyntaxHighlighter(parent)
{}
protected:
void highlightBlock(const QString &text) override
{
// 设置特定文本的字体颜色和字体大小
QTextCharFormat format;
format.setForeground(QBrush(Qt::red)); // 设置字体颜色为红色
format.setFontPointSize(14); // 设置字体大小为14
setFormat(0, text.length(), format); // 设置格式
}
};
// 在 QPlainTextEdit 中使用 MyHighlighter
QPlainTextEdit *plainTextEdit = new QPlainTextEdit(this);
MyHighlighter *highlighter = new MyHighlighter(plainTextEdit->document());
highlighter->setDocument(plainTextEdit->document());
```
在上述示例中,我们自定义了一个继承自 QSyntaxHighlighter 的高亮器类 MyHighlighter,重写了其 highlightBlock() 方法,在其中设置特定文本的字体颜色和字体大小。然后,我们在 QPlainTextEdit 中使用这个高亮器类,将其设置到 QPlainTextEdit 的 document 中。
在使用 setFormat() 方法设置格式时,使用文本的长度作为第二个参数可以确保只设置当前行的格式,而不改变其他文本的格式。