QPlainTextEdit обрезает историю построчно

У меня есть приложение с графическим интерфейсом, основной частью которого является QPlainTextEdit. Он используется для отображения журнала приложения, и поэтому связанный с ним текст растет строка за строкой до бесконечности.

Поскольку приложение предназначено для очень долгой работы, мне нужно ограничить память, которая будет выделена для этого журнала. Поэтому я хочу иметь некоторый параметр maxNumLinesили maxNumCharacters, который будет гарантировать, что история будет усечена при достижении, т.е. строки заголовков будут удалены по мере добавления новых строк (иначе ротация журнала).

Для этого я нашел функции

// get the associated text
QString toPlainText () const

// set the associated text
void setPlainText ( const QString & text )

Поэтому что-то вроде этого непроверенного кода, вероятно, сработает:

QString &tmp = pte.toPlainText();
while (tmp.size() > maxNumCharacters) {
  // remove lines from the head of the string until the desired size is reached
  // removes nothing if "\n" could not be found
  tmp.remove(0, tmp.indexOf("\n")+1);
}
pte.setPlainText( tmp );

Можно ли таким образом удалить первую строку(и) из QPlainTextEdit? Возможно, есть другие элементы графического интерфейса Qt Text, которые лучше подходят для этой задачи (установите максимальное количество строк и обрежьте в начале списка), например. каким-то образом отобразить QStringList, в котором я мог бы хранить строки (я мог бы легко стереть(0))?

Или QPlainTextEdit все-таки реализует такую ​​верхнюю границу размера ассоциированной строки QString?

9
задан moooeeeep 18 June 2016 в 11:32
поделиться