从GTK +中的Textbox获取文本

时间:2011-02-16 05:14:37

标签: c++ gtk

当用户对其进行更改时(get the input text),我正在callback function的文本框中尝试"changed"

代码如下:

#include <stdio.h>
#include <gtk/gtk.h>
void enter_callback( GtkWidget *widget, GtkEditable *buffer)
{
  printf("%s",gtk_editable_get_chars(buffer, 0, -1));
}
int main(int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *text;
    GtkWidget *table;

    gtk_init (&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    table = gtk_table_new (2, 2, TRUE);
    gtk_container_add (GTK_CONTAINER (window), table);
    text=gtk_text_new(NULL, NULL);
    gtk_text_set_editable(text, TRUE);
    gtk_signal_connect(GTK_OBJECT(text), "changed", GTK_SIGNAL_FUNC(enter_callback), (GtkEditable*)text);
    gtk_table_attach_defaults(GTK_TABLE(table), text, 0, 1, 0, 1);
    gtk_container_border_width (GTK_CONTAINER (window), 40);
    gtk_window_set_default_size (GTK_WINDOW(window), 640, 200);

    gtk_widget_show(text);
    gtk_widget_show(window);
    gtk_widget_show(table);

  gtk_main();

  return 0;

}

代码编译恰到好处,我在调试时编译Code :: Blocks,通过printf检查控制台上的输出。问题是我每次在文本框上更改内容时都会将<NULL>作为回调。如何获得正确的输出?

SOLUTION:

如Washu所述,不推荐使用gtk_text,而应使用gtk_text_view。

2 个答案:

答案 0 :(得分:4)

根据GTK文档,GtkText已弃用,错误,不应使用。您应该通过gtk_text_view_new使用GtkTextView小部件。

答案 1 :(得分:1)

您也可以使用GtkEntry widget。并使用gtk_entry_get_text()(返回const gchar * value)来获取GtkEntry中的文本。

相关问题