Получить текст из текстового поля в GTK + - PullRequest
1 голос
/ 16 февраля 2011

Я пытаюсь 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> в качестве обратного вызова каждый раз, когда что-то меняю в текстовом поле.Как получить правильный вывод?

РЕШЕНИЕ:

Как отмечает Washu, gtk_text устарела, и вместо него следует использовать gtk_text_view.

Ответы [ 2 ]

4 голосов
/ 16 февраля 2011

Согласно документации GTK, GtkText устарел, содержит ошибки и не должен использоваться.Вместо этого вы должны использовать виджет GtkTextView через gtk_text_view_new.

1 голос
/ 21 февраля 2011

Вы также можете использовать GtkEntry widget .И используйте gtk_entry_get_text () (которая возвращает значение const gchar *) для получения текста, например, из GtkEntry.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...