QTextEdit 设置上限行数,超过上限行数自动删除行

1、背景

最近使用QTextEdit 作为程序运行时的信息输出区,来进行用户的交互,由于设置为不可编辑,在程序长时间运行后,该QTextEdit控件所占内存巨大导致程序奔溃,所以设置上限很好的增加了程序的稳定性!

2、实现方法

使用QTextCursor类 模拟光标操作来删除多余的部分,代码如下,具体解释看注释

    QTextDocument *document = ui->textEdit->document(); // 获取文档对象,想象成打开了一个TXT文件
    int rowCount = document->blockCount(); // 获取输出区的行数
    if(rowCount > 2000){ //设定为2000行,超过则开始删除
        QTextCursor cursor = QTextCursor(document); // 创建光标对象
        cursor.movePosition(QTextCursor::Start); //移动到开头,就是TXT文件开头

        for (int var = 0; var < rowCount - 2000; ++var) {
            cursor.movePosition(QTextCursor::Down, QTextCursor::KeepAnchor); // 向下移动并选中当前行
        }
        cursor.removeSelectedText();//删除选择的文本
    }

3、注意事项

一、最大值的设置看你自己的实际测试,我这里是2000;

二、选择文本的方式!这里用的cursor.movePosition(QTextCursor::Down, QTextCursor::KeepAnchor),要是使用cursor.select(QTextCursor::LineUnderCursor) 行选择,或者cursor.select(QTextCursor::BlockUnderCursor) 段选择,只能删除第一行,因为他俩都无法选择换行符,所以第一行始终都是空白的!

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值