QPlainTextEdit可用于日志显示信息,当遇到如图所示的现象的时候,我们需要进行
覆盖显示。
找了很久,只有介绍setOverwriteMode(bool)函数来实现,但是问题比较多。
选择了一个新的方法实现该功能。基本逻辑,选择QPlainTextEdit的最后一个block(为了防止文本过长的自动换行导致最后一行是部分数据)并删除它,后续的新的block在删除的位置正常写入即可。逻辑简单,代码也简洁
QString msg = QString::fromLocal8Bit(qbt);
if(msg.contains("Processing...") || msg.contains("%)")){
//提取QPlainTextEdit的文本模块,选择文本所在的块,并删除,后面直接插入信息即可
QTextCursor tc = ui->plainTextEdit->textCursor();
tc.select(QTextCursor::BlockUnderCursor);
tc.removeSelectedText();
}
ui->plainTextEdit->insertPlainText(msg);
结果:
参考csdn论坛:https://bbs.csdn.net/topics/390545540