Seite 1 von 1
[gelöst] Konsolenausgaben abfangen?
Verfasst: 23. Oktober 2008 17:10
von mathies
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?
Verfasst: 23. Oktober 2008 17:31
von Christian81
Dafür gibt es QProcess::readAllStandardError() und QProcess::readAllStandardOutput() und diverse Signals.
Verfasst: 24. Oktober 2008 11:10
von mathies
Danke, genau das wars...
Verfasst: 26. Oktober 2008 22:12
von surfman19
hi,
zeig mal bitte wie du das gelöst hast...danke!
lg
Verfasst: 27. Oktober 2008 08:45
von mathies
hi,
hier meine Umsetzung...
H-File:
Code: Alles auswählen
...
protected:
QProcess* myProcess;
...
protected slots:
void printOutput();
...
C-File:
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 );
}
Hoffe es hilft Dir.
Verfasst: 27. Oktober 2008 10:40
von surfman19
man kann sowas auch über pipes machen oder?
Verfasst: 27. Oktober 2008 16:21
von mathies
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?
Verfasst: 28. Oktober 2008 08:27
von mathies
Kann es sein, dass es sich um NICHT-Standardausgaben handelt? Gibt es für solche Ausgaben auch eine Möglichkeit diese abzufangen?
Verfasst: 28. Oktober 2008 09:20
von solarix
jedenfalls scheint es die Ausgaben erst nach einer gewissen Menge an Zeichen "freizugeben".
evt. hilft
http://doc.trolltech.com/4.4/qiodevice. ... eFlag-enum
"QIODevice::Unbuffered"..?
Verfasst: 28. Oktober 2008 10:13
von mathies
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???
