Diseño de interfaz de programación GTK
void GTK _ contenedor _ set _ focus _ chain(GTK contenedor * contenedor
GList * focusable _ widgets
Focusable_widgets es una secuencia de pestañas Lista ordenada); de controles, que deben ser controles secundarios del contenedor. GList debería funcionar.
Si desea establecer el orden de los controles en diferentes contenedores, solo necesita anidarlos; simplemente no puede haber un orden de control cruzado. Implementé un programa simple para demostrar la configuración del orden de las teclas TAB.
Como se muestra a continuación:
# include & ltGTK/GTK
int main(int argc, char *argv[])
{
GTK_init(& argc & argv);
Widget GTK * VENTANA = GTK_WINDOW_new(GTK_Window_Top);
GTK_WINDOW_set_position(GTK_WINDOW(Ventana),GTK_WIN_POS_CENTER); p>
GTK_WINDOW_set_default_size(GTK_WINDOW(VENTANA), 480, 360);
g_signal_connect(G_OBJECT(ventana), "destruir",
G_CALLBACK(gtk_main_quit), NULL);
GtkWidget * caja = GTK _ caja _ nueva (GTK _ ORIENTACIÓN _ VERTICAL, 5);
GtkWidget * caja 1 = GTK _ caja _ nueva (GTK _ ORIENTACIÓN _ VERTICAL, 5);
GtkWidget * caja 2 = GTK_box_new(GTK_ORIENTATION_VERTICAL, 5);
GTK_CONTAINER_add(GTK_container(ventana),caja);
gtk_box_pack_start( GTK_BOX( box), box1, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(box), box2, TRUE, TRUE, 0);
GtkWidget *entry1, *entry2 , * entrada3, *entrada4, *entrada5, *entrada6
GList * cadena
entrada 1 = GTK_entry_new();
GTK_ENTRY _ set _ text(GTK _ ENTRY (ENTRADA 1), "ENTRADA 1");
entrada 2 = GTK _ entrada _ nueva();
GTK _ ENTRADA _ set _ text(GTK_ENTRY(ENTRADA 2), "ENTRADA 2");
entrada 3 = GTK_entry_new();
GTK_ENTRY_set_text(GTK _ ENTRY(ENTRADA 3), "ENTRADA 3");
entrada 4 = GTK _ entrada _ new();
GTK _ ENTRY _ set _ text(GTK _ ENTRY( ENTRADA 4), "ENTRADA 4");
entrada 5 = GTK_entry_new();
GTK_ENTRY_set_text(GTK_ENTRY(ENTRY 5), "ENTRY 5");
entrada 6 = GTK_entry_new();
GTK_ENTRY_set_text(GTK_ENTRY( ENTRADA 6),"ENTRADA 6");
p>
GTK_BOX_pack_start(GTK_BOX(CAJA 1),entrada1,verdadero,verdadero,0);
GTK_BOX_pack_start(GTK_BOX(CAJA 1), entrada2, VERDADERO, VERDADERO,
);GTK_BOX_pack_start (GTK_BOX (CAJA 1), entrada3, VERDADERO, VERDADERO,
GTK_BOX_pack_start(GTK_BOX(CAJA 2), entrada4, VERDADERO, VERDADERO, 0); );
GTK_BOX_pack_start(GTK_BOX(CAJA 2), entrada5, VERDADERO, VERDADERO, 0
GTK_BOX_paquete_inicio (GTK_BOX (CAJA 2), entrada6); , TRUE, TRUE, 0);
/*
* Establezca el siguiente orden de teclas TAB, pero no establezca el orden entre contenedores.
*Por ejemplo, 524136 y 634251 no funcionarán.
*Pero puede ser 132465 o 645312.
* Establezca el orden de las teclas TAB en 564213 a continuación.
*/
/*Primero establece el orden de los dos cuadros GTK*/
chain = NULL
chain=g_list_append( cadena, caja 2);
chain=g_list_append(cadena,caja 1);
GTK_CONTAINER_set_focus_chain(GTK_container(caja),cadena);
g_list_free(cadena) );
/*Establecer el orden de los subcontroles en el cuadro 2 564*/
chain = NULL
chain=g_list_append (cadena, entrada 5);
chain=g_list_append(cadena, entrada 6);
chain=g_list_append(cadena, entrada 4);
GTK _ CONTAINER_set_focus_chain(GTK_container(box2), chain);
g_list_free(chain);
/*Establecer el orden de los subcontroles en el cuadro 1 213*/
chain = NULL
chain=g_list_append(cadena, entrada 2);
chain=g_list_append(cadena, entrada 1);
chain=g_list_append(cadena, entrada 3);
GTK_CONTAINER_set_focus_chain(GTK_CONTAINER(cuadro 1),cadena);
g_list_free(cadena);
gtk_widget_show_all(ventana);
GTK _ main( );
Devuelve 0;
}