Ho un'applicazione GUI la cui parte principale è una QPlainTextEdit. È usato per visualizzare un log dell'applicazione, e come tale il testo associato cresce linea per linea all'infinito.QPlainTextEdit cronologia troncata linewise
Poiché l'applicazione deve funzionare molto a lungo, è necessario limitare la memoria che verrà allocata per questo registro. Pertanto voglio avere qualche parametro maxNumLines
o maxNumCharacters
che si assicurerà che la cronologia venga troncata quando viene raggiunta, cioè le linee di testa verranno rimosse quando vengono aggiunte nuove linee (a.k.a rotazione del registro).
per raggiungere questo obiettivo ho trovato le funzioni
// get the associated text
QString toPlainText() const
// set the associated text
void setPlainText (const QString & text)
Quindi qualcosa di simile a questo codice non testato sarebbe probabilmente fare il trucco:
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);
E 'questa la strada da percorrere per rimuovere la prima linea (s) dallo QPlainTextEdit
? Ci sono probabilmente altri elementi della GUI di Qt Text che si adattano meglio a questa attività (imposta un numero massimo di linee e troncati all'inizio dell'elenco), ad es. in qualche modo visualizzare uno QStringList
in cui potrei memorizzare le linee (potrebbe facilmente erase(0)
)?
Oppure il QPlainTextEdit eventualmente implementa tale limite superiore per la dimensione della QString associata, dopo tutto?
Grazie per la condivisione. In precedenza utilizzavo l'inserimento basato sul cursore, ma ho scoperto che i metodi 'append *' forniranno prestazioni molto più elevate. – AkiRoss