[gelöst] Konsolenausgaben abfangen?
[gelöst] Konsolenausgaben abfangen?
Hallo,
ich habe ein seperates Konsolenprogramm mit QProcess aus meiner GUI-App gestartet. Wird zwar erfolgreich ausgeführt, allerdings fehlen mir die Konsolenausgaben. Gibt es eine Möglichkeit diese abzufangen?
ich habe ein seperates Konsolenprogramm mit QProcess aus meiner GUI-App gestartet. Wird zwar erfolgreich ausgeführt, allerdings fehlen mir die Konsolenausgaben. Gibt es eine Möglichkeit diese abzufangen?
Zuletzt geändert von mathies am 29. Oktober 2008 15:36, insgesamt 4-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
hi,
hier meine Umsetzung...
H-File:
C-File:
Hoffe es hilft Dir.
hier meine Umsetzung...
H-File:
Code: Alles auswählen
...
protected:
QProcess* myProcess;
...
protected slots:
void printOutput();
...
Code: Alles auswählen
// Konstruktor
...
myProcess = new QProcess(this);
QObject::connect(myProcess, SIGNAL(readyReadStandardOutput()),this,SLOT(printOutput()));
...
// Starten des Processes
myProcess->start(exeFile, arguments);
...
// Funktion
void MyClass::printOutput()
{
static QByteArray tOutput;
// lesen der Ausgaben
tOutput = myProcess->readAllStandardOutput();
// Darstellung in einem QPlainTextEdit oder wo auch immer Du willst
qpte_output->appendPlainText( tOutput );
}
Weiß ich leider nicht.
Im Moment hab ich auch ein Problem mit einem anderen Programm was ich anstarten will bzw. mit dessen Ausgaben. Das Event zum Auslesen kommt erst nachdem schon ne ganze Menge geschrieben wurde und auch immer zur gleichen Zeit, keine Ahnung ob das Programm keine Standardoutputs benutzt oder was auch immer, jedenfalls scheint es die Ausgaben erst nach einer gewissen Menge an Zeichen "freizugeben". In ner seperaten Konsole seh ich alles wunderbar und zeitnah, nur mit den Events von QProcess klappt es nicht. hab auch schon von read() bis readyReadStandardError() alles durch. Immer das gleiche..
Hat da noch jemand ne Idee?
Im Moment hab ich auch ein Problem mit einem anderen Programm was ich anstarten will bzw. mit dessen Ausgaben. Das Event zum Auslesen kommt erst nachdem schon ne ganze Menge geschrieben wurde und auch immer zur gleichen Zeit, keine Ahnung ob das Programm keine Standardoutputs benutzt oder was auch immer, jedenfalls scheint es die Ausgaben erst nach einer gewissen Menge an Zeichen "freizugeben". In ner seperaten Konsole seh ich alles wunderbar und zeitnah, nur mit den Events von QProcess klappt es nicht. hab auch schon von read() bis readyReadStandardError() alles durch. Immer das gleiche..
Hat da noch jemand ne Idee?
evt. hilft http://doc.trolltech.com/4.4/qiodevice. ... eFlag-enumjedenfalls scheint es die Ausgaben erst nach einer gewissen Menge an Zeichen "freizugeben".
"QIODevice::Unbuffered"..?
Das hilft leider auch nicht. Ich bekomme trotzdem erst nach etlichen Ausgaben ein Signal vom QProcess. Manchmal bekomme ich dann beim Beenden des Programms auch einen Fehler beim Ausführen von read().
Ist für mich halt nur fraglich warum ich die Ausgaben sehe, wenn ich das Programm seperat in ner Konsole starte???
Ist für mich halt nur fraglich warum ich die Ausgaben sehe, wenn ich das Programm seperat in ner Konsole starte???