[gelöst] Schnell Text auf dem Bildschirm plotten.
[gelöst] Schnell Text auf dem Bildschirm plotten.
Hallo Leute,
ich habe das Problem, dass ich recht schnell (ca. alle 10..100ms) Textzeilen (10..100 Zeichen) auf dem Bildschirm ausgeben muss.
Derzeit nutze ich ein QTextEdit dafür. Dabei nutze ich append(QString) um neue Zeilen an die bestehenden anzuhängen. Dabei scrollt das QTextEdit, was den ganzen Prozess imens bremst.
Ich habe statt append (QString) auch insertPlainText(QString) genutzt. Dabei scrollt das QTextEdit nicht automatisch, was eigentlich OK ist. Nun würde ich noch gerne den neuen Text nicht ans Ende einfügen, sondern an den Anfang des QTExtEdits.
Gibt es eine einfache Möglichkeit den Cursor an den Anfang zu schieben, a la moveCursorToBegin() oder so?
Oder gibt es vielleicht eine viel bessere Methode Viel Text schnell auf dem Bildschirm darzustellen??
Grüße
Christian
ich habe das Problem, dass ich recht schnell (ca. alle 10..100ms) Textzeilen (10..100 Zeichen) auf dem Bildschirm ausgeben muss.
Derzeit nutze ich ein QTextEdit dafür. Dabei nutze ich append(QString) um neue Zeilen an die bestehenden anzuhängen. Dabei scrollt das QTextEdit, was den ganzen Prozess imens bremst.
Ich habe statt append (QString) auch insertPlainText(QString) genutzt. Dabei scrollt das QTextEdit nicht automatisch, was eigentlich OK ist. Nun würde ich noch gerne den neuen Text nicht ans Ende einfügen, sondern an den Anfang des QTExtEdits.
Gibt es eine einfache Möglichkeit den Cursor an den Anfang zu schieben, a la moveCursorToBegin() oder so?
Oder gibt es vielleicht eine viel bessere Methode Viel Text schnell auf dem Bildschirm darzustellen??
Grüße
Christian
Zuletzt geändert von bw1faeh0 am 24. Oktober 2007 08:41, insgesamt 1-mal geändert.
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
textcursoor an den anfang bewegen geht per
wenn du etwas an den anfang eines qstring setzen willst, geht das aber per prepend():
mfg,
julian
Code: Alles auswählen
QTextCursor cursor = irgendeinTextEdit->textCursor();
cursor.movePosition( QTextCursor::Start );Code: Alles auswählen
QString str = "Welt";
str.prepend( "Hallo " );
str.append( '!' );julian
mhh... also
fügt die Daten 'oben' ein... es ist jetzt nur A****-langsam geworden 
Code: Alles auswählen
QTextCursor cursor = irgendeinTextEdit->textCursor();
irgendeinTextEdit->insertPlainText(data);
irgendeinTextEdit->setTextCursor(cursor);
cursor.movePosition( QTextCursor::Start );Gibt es evtl die Möglichkeit die Länge, also die Anzahl der Zeilen des QTextEdit, zu beeinflussen?
Ich bekomme zwar die Daten schnell rein, aber nach 1 Sekunde interessieren sie mich kaum noch, und ich kann sie verwerfen. Wenn ich also sagen könnte, dass QTextEdit nur maximal 50 Zeilen haben soll, könnte es auch wieder schneller gehen....
Jemand eine Idee?
Ich bekomme zwar die Daten schnell rein, aber nach 1 Sekunde interessieren sie mich kaum noch, und ich kann sie verwerfen. Wenn ich also sagen könnte, dass QTextEdit nur maximal 50 Zeilen haben soll, könnte es auch wieder schneller gehen....
Jemand eine Idee?
-
-=Freaky=-
- Beiträge: 503
- Registriert: 29. Dezember 2006 22:54
- Wohnort: HL
hinzufuegen vllt. per
... keine ahnung ob das schneller geht.
die max. zeilenanzahl kannst du afaik nicht angeben.
du koenntest hoechstens per
die maximale zeichenanzahl pro zeile setzen.
dazu muesstest du nur wissen, wie breit dein qtextedit ist.
mfg,
julian
Code: Alles auswählen
SomeQTextEdit.setPlainText( SomeQTextEdit.toPlainText().prepend( qstring_derdavorgehaengt_werden_soll ) );die max. zeilenanzahl kannst du afaik nicht angeben.
du koenntest hoechstens per
Code: Alles auswählen
SomeQTextEdit.setLineWrapMode( QTextEdit::FixedColumnWidth );
SomeQTextEdit.setLineWrapColumnOrWidth( max_anzahl_zeichen_pro_zeile );dazu muesstest du nur wissen, wie breit dein qtextedit ist.
mfg,
julian
Muss es denn scrollbar/markierbar sein bzw. brauchst du unbedingt RichText? Wahrscheinlich ist ein QLabel schneller, oder du machst dir ein eigenes Widget dass den Text dann selbst rendert, so kannst du auch die feste Zeilenzahl intern besser managen und lässt z.B. einen Zähler entscheiden, welche Zeile deines Arrays gerade oben angezeigt werden soll und welche Zeile neuen Text bekommen kann
ch weiß nicht ob z.B. QList so intelligent ist, wenn der Speicher voll ist oben am Anfang neue Elemente reinzuschreiben die ja entfernt wurden, statt die Liste zu erweitern oder so..).
Übrigens: ein eigenes widget zu erstellen ist ganz leicht, einfach QWidget::paintEvent() und ggf. QWidget::resizeEvent überladen oder so, . Musst dann halt nur noch ne Stelle im Fenster finden, z.B. ein layout widget, wo du das dann einfügst...
MfG,
FaS
Übrigens: ein eigenes widget zu erstellen ist ganz leicht, einfach QWidget::paintEvent() und ggf. QWidget::resizeEvent überladen oder so, . Musst dann halt nur noch ne Stelle im Fenster finden, z.B. ein layout widget, wo du das dann einfügst...
MfG,
FaS