Ich habe eine Konsolenanwendung, die von Bison (ein Parser) generiert und ich möchte eine einfache GUI für sie erstellen, so dass ich eine Eingabe von diesem GUI an die Konsole senden kann und Ausgabe von der Konsole in die GUI. Ich habe versucht, das mit Java-Prozess-Klasse zu tun, aber es funktioniert nicht für mich, bitte helfen Sie mir, dass mit qt zu tun.mit qt: Wie baue ich ein Gui OnTop einer Konsolenanwendung?
Antwort
Es hängt von der Komplexität der Daten ab, die Sie in Ihrer Konsolenanwendung ein- und auslagern möchten.
Geringe Komplexität Verwenden Sie einige Befehlsschalter, die Sie von Ihrer Qt-GUI an Ihre Konsolenanwendung übergeben. Schauen Sie sich die QProcess class documentation an.
Hohe Komplexität Ich würde mit einer RPC-ähnlichen Lösung gehen. Schauen Sie sich die QtDBus documentation (nur Linux/Unix).
Hinweis: Ich habe die Annahme gemacht, dass Sie Ihren generierten Bison-Parser getrennt von Ihrer Qt-GUI halten möchten (falls Sie die Regenerierung erneut benötigen).
Ich glaube, Sie die folgenden Einträge in Ihrer .proDatei setzen haben:
# Anwendungsvorlage
TEMPLATE = app
# QMake Konfiguration
CONFIG + = Konsole
können Sie Dann erstellen Sie ein Fenster in Qt, und Sie haben Ihr Hauptfenster neben einer Konsole!
Beispiel:
main.cpp
{
QApplication App(argc, argv);
...
MainFrm* pMainFrm = new MainFrm();
pMainFrm->show();
...
int ExitCode = App.exec();
return ExitCode;
}
Hoffnung hilft es ein wenig!
aber wie kann ich senden und Ausgabe erhalten ?! – Radi
Eine Alternative: Tcl/TK
Es sei denn, Sie haben guten Grund QT verwenden Sie könnte es einfacher finden Tcl/Tk. Tcl zu verwenden, wurde Einrichtungen Scripting und GUI von Grund auf zum Umwickeln von C-Programmen bestehenden und ist bei weitem der einfachste Weg, dies zu tun. Es unterstützt eine ganze Reihe von Möglichkeiten, C-Code und Tk zu integrieren (das mit Tcl/Tk gelieferte GUI-Toolkit) ist recht übersichtlich zu programmieren und sehr einfach zu erlernen (denke: ein 2-stündiges Labor in einem CS-Paper).
Tcl Integrationsfunktionen:
Tcl eine Vollduplex-Leitung mit dem Programm öffnen und das Rohr nach unten kommunizieren. Vermutlich ist dies die beste Option für Sie.
Sie können fork/exec verwenden, um das Programm unter Übergabe von Befehlszeilenargumenten auszuführen.
Sie können den Tcl-Interpreter auch in Ihr C-Programm einbetten; Die API dafür ist todschick.
Tcl hat APIs (auch recht einfach), um den Interpreter um neue Befehle zu erweitern.
Wahrscheinlich ein oder zwei andere Möglichkeiten, an die ich mich nicht mehr erinnern kann.
Halten Sie Ihre Konsole und Ihre grafische Anwendung, zwei getrennte Anwendungen. Sie haben bereits die Konsole, also schauen wir uns an, wie Sie die andere machen können:
Erstellen Sie eine normale GUI-Anwendung in Qt und rufen Sie mit der QProcess-Klasse Ihre Konsolenanwendung auf. Verwenden Sie die Methoden readData() und writeData() (und ähnliche) dieser Klasse, um von der Standardausgabe zu lesen und in die Standardeingabe Ihrer Konsolenanwendung zu schreiben.
Weitere Informationen finden Sie in der Dokumentation QProcess.
von http://www.qtcentre.org/threads/33506-where-is-cout-in-Qt-Creator
ersten
CONFIG += console
auf Ihre .proDatei
zweite Verwendung
#include <stdio.h>
QTextStream out(stdout);
out << QString("Some text");
Für mich hinzufügen, es funktioniert auf diese Weise.
Viel Spaß
- 1. Wie ein ProgressBar setzt ontop einer Ansicht
- 2. qDebug Qt-Konsolenanwendung zur Ausgabe an die Qt Creator-Anwendungsausgabe
- 3. Wie schließe ich wsgiserver mit Flasche ontop
- 4. Wie baue ich ein Network.HTTP.Conduit.Request-Objekt?
- 5. Wie baue ich Artefakte in Teamcity ein
- 6. Designing OpenCV GUI mit Qt
- 7. Wie benutze ich eine Qt GUI mit Vala?
- 8. Wie baue ich ein großartiges Spieleentwicklungs-Team?
- 9. Wie baue ich ein Belichtungsmesser Programm?
- 10. Verringern Qt GUI-Anwendungsgröße
- 11. Qt-GUI dynamisch manipulieren
- 12. Qt GUI-Design programmgesteuert
- 13. Wie definiere ich ein Objektverzeichnis in einer Qt-Projektdatei?
- 14. Wie mache ich ein Unterprojekt mit Qt?
- 15. Wie baue ich ein Set mit einem Array
- 16. Wie baue ich ein Baum-Steuerelement mit JSON und jQuery
- 17. Wie baue ich ein Echtzeit-Empfehlungssystem mit Apache Spark?
- 18. Ein Bild in die GUI mit QT Designer einfügen
- 19. Wie baue ich x64 mit monodevelop?
- 20. Qt GUI Update-Elemente nicht mit Golang
- 21. Wie baue ich git mit statischer Verknüpfung?
- 22. Wie baue ich Boost-Beispiele mit bjam?
- 23. Wie baue ich wxShapeFramework mit CodeBlock
- 24. Wie funktioniert ein GUI Framework?
- 25. GUI C++ Qt mit Visual Studio 2010
- 26. Wie baue ich ein Display in 2D für ein Spiel
- 27. Ausführen eine Konsolenanwendung mit Argumenten von C# - GUI Hookup Tipps
- 28. Wie erstelle ich eine Pause/Warte-Funktion mit Qt?
- 29. Do Gui testet in Qt
- 30. Wie verwende ich QGraphicsScene in der Konsolenanwendung?
Befehlszeilenanwendungen haben bereits "rpc like solutions", sie heißen stdin & stdout =) – rasjani
hahaha, right. :) Aber es könnte ein Schmerz sein, zu analysieren, wenn Ihre Konsolenanwendung eine Menge Informationen an sdtout ausgibt. Daher meine zweifache Antwort: niedrige vs hohe Komplexität. ;) –