解决方法
1 QTextCursor tc = ui->textRec->textCursor(); 2 tc.movePosition(QTextCursor::End); 3 tc.insertText(appendStr);
更好的方法
这个方法参考了QT append()函数的源码。
1 //获取滚动条位置
2 bool atEnd = ui->textRec->verticalScrollBar()->value() >= ui->textRec->verticalScrollBar()->maximum(); 3 QTextCharFormat fmt; 4 fmt.setForeground(color); 5
6 QTextCursor tmp(ui->textRec->document()); 7
8 tmp.beginEditBlock(); 9 tmp.movePosition(QTextCursor::End); 10
11 if (!ui->textRec->document()->isEmpty()) 12 { 13 tmp.insertBlock(ui->textRec->textCursor().blockFormat(), ui->textRec->textCursor().charFormat()); 14 }else{ 15
16 tmp.setCharFormat(ui->textRec->textCursor().charFormat()); 17 } 18
19 tmp.movePosition(QTextCursor::End); 20 tmp.deletePreviousChar(); 21
22 tmp.insertText(appendStr, fmt); 23
24 // preserve the char format
25 QTextCharFormat oldCharFormat = ui->textRec->textCursor().charFormat(); 26
27 if (!ui->textRec->textCursor().hasSelection()) 28 ui->textRec->textCursor().setCharFormat(oldCharFormat); 29
30 tmp.endEditBlock(); 31 if(atEnd) 32 ui->textRec->verticalScrollBar()->setValue(ui->textRec->verticalScrollBar()->maximum());