У меня есть приложение с графическим интерфейсом, основной частью которого является 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?