C++ [Qt] GUI-Projekt mit paralleler Konsolenausgabe

~ba

Cadet 2nd Year
Registriert
Dez. 2010
Beiträge
24
Hallo,

ist es möglich, sich bei einem Qt-GUI-Projekt Daten auf der Konsole (cmd, PS) ausgeben zu lassen? Wenn ja, wie?

Konkret möchte ich bei meinem C++-Programm, das die Qt-Libraries für die GUI benutzt, zusätzlich beziehungsweise nach Bedarf Daten zum Beispiel mit „cout“ oder „cerr“ parallel zur laufenden GUI in der Konsole ausgeben lassen.

Oder kann ich innerhalb meiner GUI ein Pseudo-Konsolenfenster erstellen, über das ich diese Ausgaben erzielen kann?

Vielen Dank im Voraus für erleuchtende Beiträge!
 
Mach eine Konsolenanwendung und lass die GUI in einem eigenen Thread laufen.
 
ich bin mir jetzt nicht sicher, aber wie ich mal auf linux was an wireshark gecoded hab wars so dass man einfach nur irgendwo printf aufrufen musste um ne ausgabe zu kriegen.

jedoch war die ausgabe nur sichtbar wenn man das Programm über das Terminal gestartet hat und nicht per klick auf die kompilierte datei
 
Zuletzt bearbeitet:
Ich habe mich vielleicht in meinem ersten Post unklar ausgedrückt:
Eigentlich meinte ich, dass ich innerhalb meiner Qt-GUI eine Art „Konsolenwidget“ habe, in der ich dann Statusmeldungen ausgeben kann.
Ich meine in etwa so wie in Eclipse, wo unten auch eine Konsole beim Kompilieren angezeigt wird (siehe Anhang).
Gibt es nicht eine Funktion, die es ermöglicht alle Ausgaben, sobald die jeweilige Funktion (wie std::cout etc.) aufgerufen wird, in ein QTextEdit oder so etwas umzuleiten?

Vielen Dank schon mal für die Posts.
 

Anhänge

  • eclipse Console.png
    eclipse Console.png
    112,1 KB · Aufrufe: 312
@badday Das ist Qt3-Code. Muss also noch ein ganzes Stück angepasst werden.
Ansonsten funktioniert der dort vorgestellte Trick ausschließlich für std::cout aus c++. Nicht jedoch für stdout aus c und auch nicht für Kindprozesse.

@~ba Willst du die Statusmeldungen deines eigenen Programmes anzeigen? Dann solltest du dir einen Logger als Singleton Object schreiben und diese mit Signal-Slot deine Ausgabe binden. Dafür dann auf die Spiele mittels std::cout/cerr verzichten.

Wenn du die Ausgaben deiner Kindprocesse überwachen willst, dann solltest du diese mittels QProcess starten und darüber auslesen. QProcess selber ist als QIODevice implementiert. Man kann also sehr einfach mittels QTextStreams auf die Daten des Kindprozesses zugreifen. Dies kannst du dann, über die Statussignale des QProcess gesteuert, in dein Log schreiben.
 
Zuletzt bearbeitet: (QProcess liefert die Signale)
Danke für die Antworten, ich werde dann mal versuchen, sie umzusetzen.
@ghorst: Ich muss noch mit meinem Mit-Coder besprechen, wofür die Konsole eingesetzt werden soll.
Ergänzung ()

Also es geht darum, ein eigentlich für die Konsole geschriebenes Programm mit einer GUI zu versehen und da ist (unserer Meinung nach) das Debuggen leichter, wenn wir die Konsolenausgabe (zumindest in einem Debug-Build) noch da haben. Die soll dann im fertigen Programm aber nicht mehr sein.
Ich gehe davon aus, dass hier der zweite Ansatz, also über QProcess, sinnvoller ist.
 
Zurück
Oben