QProcess: Stdout-Daten lassen sich nicht abfangen

Alles rund um die Programmierung mit Qt
Antworten
Colin Finck
Beiträge: 6
Registriert: 22. April 2006 19:59
Kontaktdaten:

QProcess: Stdout-Daten lassen sich nicht abfangen

Beitrag von Colin Finck »

Hallo,

Ich versuche gerade unter Qt 3.3 über QProcess ein Konsolenprogramm (hier "gcc") zu starten und dann den Stdout abzufangen. Leider funktioniert folgender Code nicht:

Code: Alles auswählen

gccprocess::gccprocess()
{
	proc = new QProcess(this);
	proc->addArgument("gcc");
	proc->addArgument("--version");
	connect(proc, SIGNAL(readyReadStdout()), this, SLOT(stdout_in()));

	if(proc->start())
		qDebug("process started");
	else
		qDebug("process not started");
}

void gccprocess::stdout_in()
{
	qDebug("stdout_in");
	qDebug(proc->readStdout());
}
Im Debug-Fenster von KDevelop wird zwar "process started" angezeigt, aber nichts aus der stdout_in()-Funktion.

Was mache ich hier falsch?

Vielen Dank im Voraus,

Colin Finck
Homepage: www.ColinFinck.de
Programme, PE Builder-Stuff (Plugins und Linkliste), Add-Ins und Sonstiges
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ist stdout_in() als slot definiert?

Poste einmal bitte den vollständigen Source mit Header.
Colin Finck
Beiträge: 6
Registriert: 22. April 2006 19:59
Kontaktdaten:

Beitrag von Colin Finck »

Ja, die Funktion ist als Slot definiert.

Hier der Header + Source:

gccprocess.h

Code: Alles auswählen

#ifndef GCCPROCESS_H
#define GCCPROCESS_H

#include <qprocess.h>

class gccprocess : public QObject
{
Q_OBJECT
public:
	gccprocess();

public slots:
	virtual void stdout_in();

private:
	QProcess *proc;
};

#endif
gccprocess.cpp

Code: Alles auswählen

#include "gccprocess.h"

gccprocess::gccprocess() 
{ 
   proc = new QProcess(this); 
   proc->addArgument("gcc"); 
   proc->addArgument("--version"); 
   connect(proc, SIGNAL(readyReadStdout()), this, SLOT(stdout_in())); 
 
   if(proc->start()) 
      qDebug("process started"); 
   else 
      qDebug("process not started"); 
} 
 
void gccprocess::stdout_in() 
{ 
   qDebug("stdout_in"); 
   qDebug(proc->readStdout()); 
}

#include "gccprocess.moc"
Beste Grüße,

Colin Finck
Homepage: www.ColinFinck.de
Programme, PE Builder-Stuff (Plugins und Linkliste), Add-Ins und Sonstiges
Antworten