Bei Darstellung von viel Text in TextEdit geht CPU-Last hoch

Alles rund um die Programmierung mit Qt
Antworten
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Bei Darstellung von viel Text in TextEdit geht CPU-Last hoch

Beitrag von M@g!ndo$ch »

Hi,

Meine Anwendung besteht aus folgenden "Komponenten".
- MainWindow
- "Arbeiter"-Thread
- Window(Ergebnisfenster) zur Darstellung von Ergebnissen in nem TextEdit

und mein Problem ist folgendes:

Über das MainWindows wird der "Arbeiter"-Thread angeworfen. Dieser schreibt während er "arbeitet" Ergebnisse (html-Strings) in eine StringList. Diese übermittelt er dann am Ende mittels Signal an den Results-Slot des Ergebnisfensters. In diesem Slot geh ich die StringListe durch, und füge
nacheinander die Strings(Ergebnisse) via insertHtml() dem TextEdit hinzu und rufe dann Ergebnisfenster->show() auf. Das funktioniert bei wenigen Ergebnissen auch wunderbar. Jetzt kanns aber durchaus passieren, dass ich ne' große Anzahl von Ergebnissen darstellen muss (z.B. >800). Sobald nun das Ergebnisfenster dargestellt wird, geht die CPU-Last auf über 50% und die Gui reagiert dadurch nur noch sehr langsam.

Kann sich das jemand von euch erklären?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das Thema hatten wir schon mal hier, eine Lösung war aber nicht dabei IIRC. Je mehr da drin steht, desto mehr muss eben geparst werden. 800 Einträge sollten eigentlich noch kein Problem darstellen, aber ich weiß ja auch nicht wie lang die Einträge sind und ob es sich überhaupt um korrektes HTML handelt :-)
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Beitrag von M@g!ndo$ch »

Aha, soso....Thx.

/noobmode on
Was genau heisst denn bitte IIRC ???
/noobmode off

Müsste eigentlich schon korrektes html sein. Lässt sich das Problem umgehen wenn ich kein html benutze?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

M@g!ndo$ch hat geschrieben:Was genau heisst denn bitte IIRC ???
If I Remember Correctly, Hier mehr davon.
M@g!ndo$ch hat geschrieben:Lässt sich das Problem umgehen wenn ich kein html benutze?
Keine Ahnung, probier es aus.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

M@g!ndo$ch hat geschrieben:/noobmode on
Was genau heisst denn bitte IIRC ???
/noobmode off
(Ich hab grad keinen Bock in anderen Threads zu schnüffeln, ob du Linux verwendest, aber)
Für Linux installier dir wtf. Nettes Consolen-Tool, da kannste von vielen Abkürzen schnell den sinn nachschlagen, z.B.:

Code: Alles auswählen

$ wtf iirc
IIRC: if I recall correctly
$ wtf wtf
WTF: {what,when,where,who,why} the fuck
$ wtf imho
IMHO: in my humble opinion
Grüße
Franz
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Beitrag von M@g!ndo$ch »

@franzf: Thx für den Tip ;-) Wäre bestimmt nützlich, muss mich allerding als Windowsnutzer outen ;-)

Zu dem Problem hab ich mal folgendes getestet:

Hab ne' Schleife mit 2000 Durchläufen nen' TestString ins TextEdit schreiben lassen. Einmal mit insertHtml() und einmal mit insertPlainText().

Code: Alles auswählen

char* testString = "<b>Dies ist ein TestString !!!!</b>........<br>\n";
for(int i=0;i<=2000;i++)
{		
	resultTextEdit->insertHtml(testString);
}
Und siehe da! Es liegt wohl am Html!!! Bei insertPlainText() funktioniert alles wunderbar....

Gruß M@g!ndo$ch
Antworten