背景問(wèn)題
在項(xiàng)目中使用QTextEdit顯示軟件的日志信息,由于在連續(xù)輸出日志信息俊抵,剛開(kāi)始QTextEdit顯示沒(méi)什么問(wèn)題,長(zhǎng)時(shí)間就會(huì)出現(xiàn)UI界面卡死坐梯,內(nèi)存占用變高徽诲。晚上查了說(shuō)QTextEdit的append函數(shù)如果不釋放會(huì)累計(jì)增加內(nèi)存,包括QPlainTextEdit的appendPlainText函數(shù)也有這個(gè)問(wèn)題吵血。這里需要定期或定量去清空內(nèi)容谎替。
解決方法
設(shè)置QTextEdit的最大顯示函數(shù)
//設(shè)置日志顯示最多5000行
ui->txt_sysLog->document()->setMaximumBlockCount(5000);
這里設(shè)置QTextEdit的最大顯示行數(shù)為5000行,這樣超過(guò)5000行蹋辅,會(huì)自動(dòng)釋放5000行之前的內(nèi)容钱贯。
其他知識(shí)點(diǎn)
1.QTextEdit不太適合處理大量的文本數(shù)據(jù),如果需要加載較大容量的數(shù)據(jù)晕翠,QTextEdit可能會(huì)出現(xiàn)反應(yīng)延時(shí)或卡死喷舀,因?yàn)閁I一直被阻塞,如果需要不斷處理大量的文本數(shù)據(jù)淋肾,最好將文本處理單獨(dú)放在一個(gè)線(xiàn)程中執(zhí)行硫麻,保持UI不被阻塞。
2.頻繁更新文本或處理大量數(shù)據(jù)樊卓,建議使用QPlainTextEdit拿愧,處理效率更高。
3.使用過(guò)程中注意內(nèi)存管理碌尔,設(shè)置QTextEdit的最大顯示行數(shù)浇辜,或及時(shí)清理顯示的數(shù)據(jù)信息。