1

当你在 c 中编写一个程序时,它有很多 printf 用于很多目的:调试、信息等。我想在 gtk 中做类似的事情,有一些小部件可以显示我通常会做的所有 printf 消息一个普通的c程序

谢谢,

---更新---我按照ptomato的建议使用vte。虽然出现了一些问题。我正在使用glade-3,当文件glade 打开时,vte 小部件没有显示。我注意到打开时会显示很多警告和 2 个严重错误。其中一个关键是

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

您可以使用 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);

您也可以使用 g_string_printf() 这是一个 glib 函数,但它将格式化的输出存储到 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

您可以创建文本视图或使用标签

将此文本视图添加到父窗口,例如Gtk Main window。您可以决定要添加哪些其他小部件。(可能是滚动窗口,然后是文本视图)。

gtk_text_view_set_buffer每次要显示日志时,使用 api在窗口上显示文本。

于 2010-08-12T03:50:23.423 回答
0

您应该简单地使用 GtkTextView 并使用这些函数将您的日志重定向到它:

  • g_log_set_default_handler()用于 g_message()/g_warning()/等。(所有通过 g_log() 的东西)
  • g_set_print_handler()(用于 g_print())
  • g_set_printerr_handler()(用于 g_printerr())

不幸的是,简单的 printf() 不能轻易重定向(但 g_print() 是一个很好的替代品)。

PS:对不起,我只能给你贴一个链接(新用户)……</p>

于 2010-08-12T09:49:08.490 回答