如何使Tab键在GtkEntry中充当Enter键?我能够在信号“激活”的情况下抓住“回车”键。我怎样才能抓住GtkEntry的“tab”键?
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);
同样,当我按下Tab键时,我如何得到通知?
发布于 2011-12-15 20:37:51
您可以为"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);
...
希望这能有所帮助!
发布于 2011-12-18 21:37:23
这通常不是一个好主意,因为tab是用来改变应用程序的焦点的。请记住,让应用程序在没有鼠标的情况下可用是很重要的,在GtkEntry中使用tab来做其他事情,而不是改变焦点,这将使这一点变得更加困难,甚至是不可能的。
https://stackoverflow.com/questions/8517713
复制相似问题