Bootstrap

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);

;