Для входа из gtk_entry_new
, как я могу подключить сигнал, когда пользователь вводит sh? finish inputing
означает:
- пользовательский пу sh
Enter
ключ. или - пользователи отводят мышь от области ввода
Для 1) мы можем использовать сигнал activate
для входа. Я не уверен в этом на 100%. Но для 2) какой сигнал можно подключить? Похоже, запись теряет фокус или что-то в этом роде.
Есть подсказки? Спасибо.
Редактировать 1 : После Google и чтения руководства Gtk + я обнаружил, что сигнал focus-out-event
- это то, что я хотел. В сигнале он излучал сигнал activate
.
gtk_signal_connect(GTK_OBJECT(entry), "focus-out-event", G_CALLBACK(span_focus_out_event), frame);
gtk_signal_connect(GTK_OBJECT(entry), "activate", G_CALLBACK(span_input_finish), frame);
Функция span_focus_out_event
:
gboolean span_focus_out_event (GtkWidget *entry, GdkEvent *event, gpointer data)
{
gtk_signal_emit_by_name(GTK_OBJECT(entry), "activate");
return FALSE;
}
Функция span_input_finish
:
gboolean span_input_finish (GtkWidget *entry, gpointer data)
{
/* do whatever */
return FALSE;
}
Примечание:
Возвращение обоих span_focus_out_event
и span_input_finish
должно быть FALSE
; в противном случае вы получите предупреждение: GtkEntry - did not receive focus-out-event. If you connect a handler to this signal, it must return FALSE so the entry gets the event as well
.
В span_input_finish
вы можете потерять фукус entry
не по своему намерению, что означает, что сигнал focus-out-event
излучается неоднократно. Позаботьтесь об этом.