bison(パーサー)から生成されたコンソールアプリケーションがあり、そのための単純なGUIを作成して、このGUIからコンソールに入力を送信し、コンソールからGUIに出力を取得できるようにします。Javaプロセスクラスを使用してそれを実行しようとしましたが、機能しません。qtを使用して実行するのを手伝ってください。
5 に答える
これは、コンソールアプリケーションにフィードイン/フィードアウトするデータの複雑さに依存します。
複雑さの低さ QtGUIからコンソールアプリケーションに渡すいくつかのコマンドスイッチを使用します。QProcessクラスのドキュメントをご覧ください。
非常に複雑 なRPCのようなソリューションを使用します。QtDBusのドキュメントをご覧ください(Linux / Unixのみ)。
注:生成されたbisonパーサーをQt GUIとは別にしておくことを想定しました(再度生成する必要がある場合に備えて)。
http://www.qtcentre.org/threads/33506-where-is-cout-in-Qt-Creatorから
最初に追加
CONFIG += console
あなたの.proファイルに
二度目の使用
#include <stdio.h>
QTextStream out(stdout);
out << QString("Some text");
私にとっては、このように機能します。
楽しむ
コンソールとグラフィカル アプリケーション、2 つの別個のアプリケーションを保持します。コンソールはすでにあるので、もう一方を作成する方法を見てみましょう。
Qt で通常の GUI アプリケーションを作成し、QProcess
クラスを使用してコンソール アプリケーションを呼び出します。readData()
このクラスのand (および同様の) メソッドを使用してwriteData()
、標準出力から読み取り、コンソール アプリケーションの標準入力に書き込みます。
QProcess
詳細については、ドキュメントを確認してください。
次のエントリをファイルに入れる必要があると思い.PRO
ます:
\# Application template<br>
TEMPLATE = app
\# QMake configuration<br>
CONFIG += console
その後、Qt で Window を作成すると、コンソールの横にメイン ウィンドウが表示されます。
例 :
main.cpp
{
QApplication App(argc, argv);
...
MainFrm* pMainFrm = new MainFrm();
pMainFrm->show();
...
int ExitCode = App.exec();
return ExitCode;
}
それが少し役立つことを願っています!
代替手段: Tcl/TK
QT を使用する正当な理由がない限り、 Tcl/Tkを使用する方が簡単な場合があります。 Tcl は、スクリプトと GUI 機能を既存の C プログラムにラップするためにゼロから設計されており、これを行う最も簡単な方法です。C コードと Tk (Tcl/Tk に同梱されている GUI ツールキット) を統合するためのさまざまな方法をサポートしています。プログラミングは非常に簡潔で、習得も非常に簡単です (CS 論文の 2 時間のラボを考えてみてください)。
Tcl 統合機能:
Tcl は、プログラムへの全二重パイプを開き、パイプを介して通信できます。推測では、これがおそらくあなたにとって最良の選択肢です。
fork/exec を使用してプログラムを実行し、コマンド ライン引数を渡すことができます。
Tcl インタープリターを C プログラムに組み込むこともできます。これを行うための API は非常に単純です。
Tcl には、新しいコマンドでインタープリターを拡張するための (これも非常に単純な) API があります。
おそらく、頭のてっぺんから思い出せない方法が他に1つまたは2つあります。