2011-12-15 2 views
0

Как заставить клавишу вкладки вести себя как ключ ввода в GtkEntry? Я могу поймать ключ «enter» с активированным сигналом. Как я могу уловить ключ «tab» для GtkEntry?Подключить TAB к gtkEntry

static void enter(GtkWidget *widget, GtkWidget *entry) 
{ 
    const gchar *entry_text; 
    entry_text = gtk_entry_get_text(GTK_ENTRY(entry)); 
    printf("Entry contents: %s\n", entry_text); 
} 

entry = gtk_entry_new(); 
g_signal_connect(entry, "activated", G_CALLBACK(enter), entry); 

Точно так же как можно получить уведомление при нажатии клавиши табуляции?

ответ

1

Вы можете зарегистрировать запись для "key-press-event" или "key-release-event", а в случае обратного вызова проверить значение ключа GdkEventKey. Вы можете использовать макросы, определенные в gdkkeysyms.h для проверки «Tab» или «Enter», то на этих линиях:

... 
#include <gdk/gdkkeysyms.h> 
... 
static gboolean 
key_press_cb(GtkWidget *w, GdkEvent *ev, gpointer data) 
{ 
    (void)w; (void)data; /* To avoid compiler warnings */ 
    GdkEventKey *key = (GdkEventKey*)ev; 
    if(key) /* Extra check maybe redundant */ 
    { 
     if(key->keyval == GDK_Tab) 
      printf(" Tab pressed\n"); 
     else if (key->keyval == GDK_Return) 
       printf(" Enter pressed\n"); 
    } 
    /* Default handling of "Tab" is change of focus. 
    * If TRUE is passed here, the event will not be propagated 
    */ 
    return FALSE; 
} 
... 
    entry = gtk_entry_new(); 
    g_signal_connect(entry, "key-press-event", G_CALLBACK(key_press_cb), NULL); 
... 

Надеется, что это помогает!

+0

спасибо за ваш ответ .. :) его удалось поймать ключ вкладки, но я не могу ввести текст в эту запись .... – Dinesh

+0

Хм, это странно, что именно вы пытаетесь сделать? Вы должны иметь возможность вводить текст. Можете ли вы опубликовать свой ключевой пресс-событие cb? –

1

Это обычно плохая идея, так как вкладка используется для изменения фокуса приложения. Помните, что важно сделать приложение удобным для использования без мыши, используя вкладку в GtkEntry для чего-то другого, кроме того, что изменение фокуса сделает это намного сложнее, возможно даже невозможным.

Смежные вопросы