Question

J'utilise Glade-3 pour ma conception d'interface graphique, mais je continue à me heurter à ce problème. Je ne vois rien dans la documentation GTK + qui mappe les signaux sur des événements ou dans Glade-3 (3.4.5). Existe-t-il un endroit dans le code source de GTK + pour trouver cette information?

Remarque: dans cette question, il est important de reconnaître que les événements et les signaux ne sont PAS la même chose dans GTK.

Exemple:

J'ai une boîte d'événements qui requiert les événements suivants pour pouvoir recevoir les signaux suivants. Comment déterminer les événements requis par un signal donné?

Events: GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK
Signals: leave_notify_event, enter_notify_event
Était-ce utile?

La solution

Ok, je pense que je sais ce que vous voulez dire maintenant, j’ai trouvé ce tableau correspondant aux signaux gtk et aux événements gdk. La voici .

Autres conseils

En supposant que j'ai bien interprété votre question, vous souhaitez connecter les signaux que vous avez spécifiés dans le fichier Glade aux fonctions du code source. Cela dépend si vous utilisez libglade pour charger les fichiers générés ou GtkBuilder, les deux sont similaires mais je donnerai des exemples en C juste pour être complet.

En utilisant libglade, vous le feriez comme suit:

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

En utilisant GtkBuilder, ce serait comme ceci:

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

Lorsque vous utilisez GtkBuilder, le second paramètre de la fonction signal connect peut être remplacé par un pointeur sur des données qui seront ensuite transmises aux gestionnaires de signaux.

À l'avenir, je suggérerais d'utiliser GtkBuilder car libglade est sur le point de devenir obsolète.

Liens

Voici les liens vers la documentation pertinente sur les deux fonctions mentionnées ci-dessus

Vous pouvez capturer les événements avec gdk_event_handler_set ()

Enregistrez d'abord votre propre gestionnaire d'événements GDK au démarrage:

gdk_event_handler_set(my_gdk_event_handler, NULL, NULL);

... Ensuite, utilisez-le pour imprimer toutes les informations utiles et n'oubliez pas de transmettre l'événement à GTK + via gtk_main_do_event () comme ici:

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+
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top