PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stdout in QTextEdit immer in selbe Zeile schreiben?



celindir
07-12-2003, 10:10
Hallo zusammen,

bin sicher, dass es ganz einfach geht, aber mir fehlt der Ansaztzpunkt:

Ich habe ein GUI für cdrecord gemacht, was die Ausgabe in ein QTextEdit namens mle_log schreibt:

void Kwickcdcopy::readFromStdout()
{
mle_log->append(my_process->readStdout() );
}

jetzt ist es ja so, dass cdrecord die Fortschrittsinfo immer in der selben zeile schreibt (z.B. 02:03:45 oder Wrote 225 of 444 MB (Buffer 100%) )

Im QTextEdit kommt aber jede Info in eine neue Zeile gefolgt von einem Kästchen, das etwa so aussieht[] (Ich vermute das ist in der Konsole der Befehl wiederr an den Zeielnfang zu springen)

Wie bekomme ich meine Ausgabe dazu bei solchen Meldungen auch immer in die selbe Zeile zu schreiben?

Ich hoffe ich konnte verständlich machen, was ich meine und Ihr habt einen Tipp für mich.

peschmae
07-12-2003, 10:44
das musst du schon manuell implementieren.

Eine Funktion mle_log->acceptEscapeSequences(true); gibts nicht ;) - einfach n bisschen Stringvergleiche machen...

MfG Peschmä

tuxipuxi
07-12-2003, 11:01
hi,

das ganze kannst du mit communication flags umgehen.

proc->setCommunication( QProcess::Stdout | QProcess::Stderr | QProcess::DupStderr );

und mit readStdout() dann auslesen.

gruss,
tuxipuxi.

anda_skoa
07-12-2003, 13:52
Original geschrieben von tuxipuxi
hi,

das ganze kannst du mit communication flags umgehen.

Inwiefern hilft das, die \r in \n umzuwandeln?

Meines Wissens hilft das nur, auch die Ausgabe am stderr mit der Methode für stdout zu lesen.

Ciao,
_

tuxipuxi
07-12-2003, 14:39
Original geschrieben von anda_skoa
Inwiefern hilft das, die \r in \n umzuwandeln?

Meines Wissens hilft das nur, auch die Ausgabe am stderr mit der Methode für stdout zu lesen.

Ciao,
_

wie das hilft, kann ich dir auch nicht sagen. du erinnerst dich aber sicher an unser gespräch wo du mir geraten hast, dass die fehlerausgabe gepuffert ist und man deswegen das auf den stdout umleiten sollte. im code des betreffenden programms, von dem ich damals den output gelesen habe, wurde auch \r verwendet.. und mit deinen tipps funktionierte es dann auch.

gruss,
tuxipuxi.

anda_skoa
07-12-2003, 15:01
Original geschrieben von celindir

Wie bekomme ich meine Ausgabe dazu bei solchen Meldungen auch immer in die selbe Zeile zu schreiben?


Kein append() machen, weil das, wie der Name schon andeutet, anhängt.
Einfach jedesmal setText()

Und das \r entfernen oder durch \n ersetzen.

Ciao,
_