当你在c中编写一个程序时,它有很多用于很多目的的printf:debuggin,information等。我想在gtk中做类似的事情,有一些小部件会显示我通常的所有printf消息会做一个正常的c程序
谢谢,
--- --- UPDATE 我正在使用vte作为ptomato建议。虽然出现了一些问题。 我正在使用glade-3,当文件glade打开时,vte小部件没有显示。我注意到打开时会显示很多警告和2个严重错误。其中一个关键是
Unable to load module 'vte' from any search paths
我安装了libvte-dev throug apt-get并且知道我在widget调色板中看到了
答案 0 :(得分:1)
您可以使用终端模拟器小部件VTE。我不确定,但我认为您可以使用vte_terminal_set_pty()
将程序的stdout
重定向到窗口小部件。
答案 1 :(得分: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小部件的文本。
答案 2 :(得分:0)
将此文本视图添加到父窗口说Gtk Main window。您可以决定添加哪些其他小部件。 (可以是滚动窗口,然后是文本视图)。
每次要显示日志时,使用api gtk_text_view_set_buffer
显示窗口上的文本。
答案 3 :(得分:0)
您应该只使用GtkTextView并使用这些函数将日志记录重定向到它:
不幸的是,简单的printf()无法轻易重定向(但g_print()是它的一个很好的替代品。)
PS:抱歉,我只能为您粘贴一个链接(新用户)......