1

デバッグ、情報など、多くの目的のために多くのprintfを持つcでプログラムを書くとき、私はgtkでそのようなことをしたいと思います。通常のCプログラム

ありがとう、

---UPDATE--- ptomato のアドバイスに従って vte を使用しています。いくつかの問題が発生しましたが。私はglade-3を使用していましたが、ファイルgladeが開いているときにvteウィジェットが表示されませんでした。開いているときに、多くの警告エラーと 2 つの重大エラーが表示されることに気付きました。それらの重要なものの1つは

Unable to load module 'vte' from any search paths

apt-get を介して libvte-dev をインストールしましたが、ウィジェット パレットに表示されることがわかりました

4

4 に答える 4

1

端末エミュレータ ウィジェットである VTE を使用できます。よくわかりませんが、stdoutを使用してプログラムをウィジェットにリダイレクトできると思いますvte_terminal_set_pty()

于 2010-08-12T07:10:31.723 に答える
0

テキストビューを作成するか、ラベルを使用できます。

このテキストビューを親ウィンドウ(Gtkメインウィンドウなど)に追加します。追加する他のウィジェットを決定できます。(スクロールウィンドウ、次にテキストビューの場合があります)。

ログを表示するたびに、APIgtk_text_view_set_bufferを使用してウィンドウにテキストを表示します。

于 2010-08-12T03:50:23.423 に答える
0

asprintf()をGNU拡張機能として使用して、フォーマットされた出力を実行できます。この出力は、新しく割り当てられたメモリに保存され、後で解放する必要があります。

char* str;
asprintf(&str, "It is a number %d\n", 1);
//...
free(str);

その代わりに、何も割り当てなかったsnprintf()を使用できます。これは、(フォーマットされた出力として)文字の配列を埋めるだけです。

char str[100];
snprintf(str, 100, "It is number %d\n", 1);

また、glib関数であるg_string_printf()を使用することもできますが、これはフォーマットされた出力をGString変数に格納します。

GString str;
g_string_printf(&str, "It is number %d\n", 1);
//...
g_string_free(&str, TRUE);

文字列をフォーマットされた出力として取得すると、GTKウィジェットのテキストとして使用できます。

于 2010-08-12T03:21:59.207 に答える
0

単純に GtkTextView を使用し、これらの関数を使用してログインをリダイレクトする必要があります。

  • g_message( )/g_warning()/etc のための g_log_set_default_handler()。(g_log() を通過するすべて)
  • g_set_print_handler() (g_print() 用)
  • g_set_printerr_handler() (g_printerr() 用)

残念ながら、単純な printf() は簡単にリダイレクトできません (ただし、g_print() はその代わりとして適しています)。

PS:申し訳ありませんが、リンクを 1 つしか貼り付けることができません (新規ユーザー)…</p>

于 2010-08-12T09:49:08.490 に答える