如何在 GTK 中使用 enter 传递条目?

How to pass the entries using enter in GTK?

我正在学习使用 GTK 编程,所以我有疑问...我怎样才能从一个条目跳到另一个条目?

我的光标在“a”字段中,所以我在这个字段中输入了一个文本,并在不使用 TAB 键的情况下传递给其他人。 有一个功能,一个信号?

// I'm with the cursor in this entry below
    code_field = gtk_entry_new();
//so i want to press enter and jump to this
    name_field = gtk_entry_new();```

您可以通过调用 gtk_container_set_focus_chain before GTK+ 3.24, and from 3.24 on, using the GtkWidget::focus 信号来设置小部件获得焦点的顺序。但通常 GTK+ 应该计算一个默认顺序,所以我们需要知道您如何将这些小部件添加到它们的容器中,以确定它为什么不符合您的需要。

您可以将 g_signal_connect() 与 gtk_widget_grab_focus()

一起使用

g_signal_connect Documentation

gtk_widget_grab_focus Documentation

示例:

假设我们有 3 个变量,您希望在 entry1 上按下 enter 时将焦点从 entry1 更改为 entry2。

GtkEntry *entry1;

GtkEntry *entry2;

void change_focus_func();

您应该为 entry1 创建一个 g_signal,并将其连接到 change_focus_func,将 entry2 作为 4º 参数传递。

g_signal_connect(GTK_ENTRY(entry1),"activate",G_CALLBACK(change_focus_func),entry2);

那么函数 change_focus_func 应该是这样的:

void  change_focus_func(GtkWidget *Widget1, Widget2){
  gtk_widget_grab_focus(Widget2);
}