QTextEdit达到指定行数自动清理+光标移动到末端(QT/C++)
标题2:QTextEdit/QPlainTextEdit/QLineEdit/QTextBrowser达到指定行数自动清理
标题3:设置QTextEdit/QPlainTextEdit/QLineEdit/QTextBrowser的光标移动到文本末端
标题4:设置QT文本框显示内容过多自动清理且光标移动到文本框末端
1、使用场景:有大量数据实时刷新显示在QT的文本框相关组件时,需要清理部分之前的数据,并且确保光标(当前显示位置)一直在最新的数据处。
2、代码实现:
(1)判断QTextEdit(其它组件类似)行数,达到指定行数则自动清理前一半的内容
// 获取QTextEdit中的文本内容
QString text = ui->textEdit->toPlainText();
// 将文本按行分割
QStringList lines = text.split("\n");
// 判断行数是否超过60行
if (lines.size() > 60) {
// 删除前面30行
lines.erase(lines.begin(), lines.begin() + 30);
// 将剩余的文本重新组合
QString newText = lines.join("\n");
// 更新QTextEdit中的文本内容
ui->textEdit->setPlainText(newText);
}
(2)光标移动到末端(当前显示位置)
// 获取QTextEdit的光标对象
QTextCursor cursor = ui->textEdit->textCursor();
// 将光标移动到文档的末尾
cursor.movePosition(QTextCursor::End);
// 将更新后的光标设置回QTextEdit
ui->textEdit->setTextCursor(cursor);