GTK+ 2 C - ввод нажат или нажата кнопка, чтобы получить текст из виджета ввода

что мне делать, чтобы печатать текст из записи при нажатии кнопки ввода или нажатии кнопки с одной функцией? Я спрашиваю, потому что, когда я нажимаю кнопку, я получаю "(PMAF:3592): Gtk-CRITICAL **: IA__gtk_entry_get_text: утверждение "GTK_IS_ENTRY (запись)" не удалось (null)"

void print_the_entry(GtkWidget *entry, gpointer user_data)
{
    g_print("%s\n", gtk_entry_get_text(user_data));

}

 //search_entry 
  search_entry = gtk_entry_new();
  g_signal_connect_swapped(G_OBJECT(search_entry), "activate", G_CALLBACK(print_the_entry), (gpointer) search_entry);

  gtk_box_pack_start(GTK_BOX(search_and_do_it_h_box), search_entry, FALSE, FALSE, 0);

  //do_it_button
  do_it_button = gtk_button_new_with_label("Do it!");
  gtk_box_pack_start(GTK_BOX(search_and_do_it_h_box), do_it_button, FALSE, FALSE, 0);
  g_signal_connect_swapped(G_OBJECT(do_it_button), "clicked", G_CALLBACK(print_the_entry), (gpointer) search_entry);

person jjpikoov    schedule 17.01.2015    source источник


Ответы (2)


Кажется, вы используете неправильный параметр, попробуйте:

g_print("%s\n", gtk_entry_get_text(GTK_ENTRY(entry)));
person David Ranieri    schedule 17.01.2015
comment
Большое спасибо, если кто-то получил предупреждение об изменении void print_the_entry(GtkWidget *entry, gpointer user_data) на void print_the_entry(GtkEntry *entry, gpointer user_data) - person jjpikoov; 17.01.2015

Это может понадобиться, если вы хотите хранить значения (введенные в текст ввода) в структуре массивов или в одном массиве.

gtk_entry_set_text(entry1, detail[i].Name);

где «detail» — структурная переменная, а «Name» — массив элементов структуры.

Просто в случаях, когда графический интерфейс имеет текст ввода, если вы хотите увидеть значения при нажатии кнопки.

person djgharphalia07    schedule 01.09.2015