1. 程式人生 > 實用技巧 >Qt QTextEdit/QTextBrowser append() 函式換行解決方法

Qt QTextEdit/QTextBrowser append() 函式換行解決方法

解決方法

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