Tengo una aplicación GUI cuya parte principal es QPlainTextEdit. Se usa para mostrar un registro de la aplicación y, como tal, el texto asociado crece línea por línea hasta el infinito.QPlainTextEdit truncate history linewise
Como la aplicación está destinada a ejecutarse por mucho tiempo, debo limitar la memoria que se asignará para este registro. Por lo tanto, quiero tener algún parámetro maxNumLines
o maxNumCharacters
que asegure que el historial se truncará cuando se llegue, es decir, las líneas se eliminarán a medida que se añadan nuevas líneas (a.k.a. rotación de registros).
Para lograr esta me encontré con las funciones
// get the associated text
QString toPlainText() const
// set the associated text
void setPlainText (const QString & text)
Por lo tanto algo así como el código no probado, probablemente haría el truco:
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);
Es este el camino a seguir para eliminar la primera línea (s) del QPlainTextEdit
? ¿Hay probablemente otros elementos de GUI de Qt Text que se ajusten mejor a esta tarea (establecer un número máximo de líneas y truncar al principio de la lista), p. de alguna manera mostrar un QStringList
en el que podría almacenar las líneas (por ejemplo, podría fácilmente erase(0)
)?
¿O el QPlainTextEdit eventualmente implementa dicho límite superior para el tamaño del QString asociado después de todo?
Gracias por compartir. Anteriormente estaba usando la inserción basada en cursor, pero descubrí que los métodos 'append *' proporcionarán desempeños mucho más altos. – AkiRoss