Pregunta

Estoy usando Glade-3 para mi diseño de GUI, pero sigo teniendo este problema. No veo nada en la documentación de GTK + que asigna señales a eventos o en Glade-3 (3.4.5). ¿Hay algún lugar en el código fuente de GTK + para encontrar esta información?

Nota: en esta pregunta es importante reconocer que los eventos y las señales NO son lo mismo en GTK.

Ejemplo:

Tengo un eventbox que requiere los siguientes eventos para recibir las siguientes señales. ¿Cómo puedo determinar qué eventos son requeridos por una señal dada?

Events: GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK
Signals: leave_notify_event, enter_notify_event
¿Fue útil?

Solución

Ok, creo que sé lo que quieres decir ahora, encontré esta tabla que coincide con las señales de gtk y los eventos de gdk. Aquí está .

Otros consejos

Suponiendo que he interpretado su pregunta correctamente, desea conectar las señales que especificó en el archivo Glade a las funciones en el código fuente. La forma de hacerlo depende de si está utilizando libglade para cargar los archivos generados o GtkBuilder, ambos son similares, pero daré muestras en C para completarlas.

Usando libglade lo harías así:

GladeXml *xml = glade_xml_new(filename, NULL, NULL); // Load the file
glade_xml_signal_autoconnect(xml); // Connect the signals

Usando GtkBuilder sería así:

GtkBuilder *xml = gtk_builder_new();
gtk_builder_add_from_file(xml, filename, NULL); // Load the file
gtk_builder_connect_signals(xml, NULL); // Connect the signals

Al usar GtkBuilder, el segundo parámetro en la función de conexión de señal puede reemplazarse con un puntero a los datos que luego se pasarán a los manejadores de señales.

Siguiendo adelante, sugeriría que usar GtkBuilder ya que libglade está en camino de ser desaprobado.

Enlaces

Aquí están los enlaces a la documentación relevante sobre las dos funciones mencionadas anteriormente

Puede capturar los eventos con gdk_event_handler_set ()

Primero registre su propio controlador de eventos GDK en el inicio:

gdk_event_handler_set(my_gdk_event_handler, NULL, NULL);

... Luego utilícelo para imprimir cualquier información útil, y no olvide pasar el evento a GTK + a través de gtk_main_do_event () como aquí:

void my_gdk_event_handler(GdkEvent *event, gpointer data)
{
    printf("Received GdkEvent of type %d", event->type);

    gtk_main_do_event(event); // Pass event to GTK+
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top