6

bison(パーサー)から生成されたコンソールアプリケーションがあり、そのための単純なGUIを作成して、このGUIからコンソールに入力を送信し、コンソールからGUIに出力を取得できるようにします。Javaプロセスクラスを使用してそれを実行しようとしましたが、機能しません。qtを使用して実行するのを手伝ってください。

4

5 に答える 5

4

これは、コンソールアプリケーションにフィードイン/フィードアウトするデータの複雑さに依存します。

複雑さの低さ QtGUIからコンソールアプリケーションに渡すいくつかのコマンドスイッチを使用します。QProcessクラスのドキュメントをご覧ください。

非常に複雑 なRPCのようなソリューションを使用します。QtDBusのドキュメントをご覧ください(Linux / Unixのみ)。

注:生成されたbisonパーサーをQt GUIとは別にしておくことを想定しました(再度生成する必要がある場合に備えて)。

于 2010-02-03T16:56:08.770 に答える
1

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");

私にとっては、このように機能します。

楽しむ

于 2012-06-21T16:35:06.770 に答える
1

コンソールとグラフィカル アプリケーション、2 つの別個のアプリケーションを保持します。コンソールはすでにあるので、もう一方を作成する方法を見てみましょう。

Qt で通常の GUI アプリケーションを作成し、QProcessクラスを使用してコンソール アプリケーションを呼び出します。readData()このクラスのand (および同様の) メソッドを使用してwriteData()、標準出力から読み取り、コンソール アプリケーションの標準入力に書き込みます。

QProcess詳細については、ドキュメントを確認してください。

于 2010-02-03T20:49:16.650 に答える
1

次のエントリをファイルに入れる必要があると思い.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;
}

それが少し役立つことを願っています!

于 2010-02-03T16:46:35.347 に答える
0

代替手段: 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つあります。

于 2010-02-03T17:19:47.997 に答える