要将新追加的内容以红色字体写入 QPlainTextEdit
,你可以使用 QTextCursor
和 QTextCharFormat
来实现。下面是一个示例代码,演示了如何将文本以红色追加到 QPlainTextEdit
中:
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QTextCursor>
#include <QTextCharFormat>
class MyWidget : public QWidget {
public:
MyWidget() {
QVBoxLayout* layout = new QVBoxLayout(this);
// 创建 QPlainTextEdit
QPlainTextEdit* textEdit = new QPlainTextEdit(this);
textEdit->setReadOnly(true); // 设置为只读
// 创建按钮
QPushButton* button = new QPushButton("添加红色文本", this);
// 按钮点击事件
connect(button, &QPushButton::clicked, [=]() {
QTextCursor cursor(textEdit->textCursor());
cursor.movePosition(QTextCursor::End); // 移动到光标末尾
// 设置字符格式为红色
QTextCharFormat format;
format.setForeground(Qt::red);
cursor.insertBlock(); // 插入一个新块(换行)
cursor.mergeCharFormat(format); // 应用红色格式
cursor.insertText("追加的红色文本内容"); // 插入文本
textEdit->setTextCursor(cursor); // 更新光标位置
});
layout->addWidget(textEdit);
layout->addWidget(button);
setLayout(layout);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget window;
window.setWindowTitle("追加红色文本示例");
window.resize(400, 300);
window.show();
return app.exec();
}
在这个示例中:
- 使用
insertBlock()
方法在插入新文本之前添加一个换行。 - 利用
mergeCharFormat()
将当前字符格式更改为红色,以便后续插入的文本采用这种格式。 - 在光标末尾插入新的文本。
运行此程序后,当你点击“添加红色文本”按钮时,会在 QPlainTextEdit
的最后一行追加“追加的红色文本内容”,并且该内容将以红色显示。
内容由零声教学AI助手提供,问题来源于学员提问