Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

[Gtk+ 2]Déterminer le nombre de widgets dans un container


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    [Gtk+ 2]Déterminer le nombre de widgets dans un container
    Bonjour à tous,

    Savez-vous comment connaître le nombre de widget/enfant inséré dans un GtkContainer ?

    D'avance, merci pour vos lumières

    PostEdit:
    Je viens de trouver ça, mais c'est assez gênant de devoir faire plusieurs boucles à chaque fois(g_list_length, gtk_container_get_children

    GList *gtk_container_get_children (GtkContainer *container);
    guint g_list_length (GList *list);

    PS: Mon but est, a partir d'un widget, de déterminer sa position/index dans le container qui le contient et le nombre de ses frères

  2. #2
    Modérateur

    Bonjour,

    plutôt que d'essayer de déterminer la position d'un widget à chaque fois que tu y accèdes, stocke plutôt sa position dans le widget lui même au moment où tu l'ajoutes dans le conteneur.
    Tu peux utiliser g_object_set_data pour associer un pointeur vers une type simple ou une structure, ou bien tu peux utiliser g_object_set_property pour associer des propriétés contenant le numéro de ligne et le numéro de colonne.

    Sinon, je ne comprends pas ce que tu veux dire par "faire plusieurs boucles à chaque fois".
    Pour ce qui est du nombre de widgets, tu as effectivement g_list_length.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Membre régulier
    Merci pour l'aide.

    J'aime bien l'idée d'utiliser g_object_set_data pour stoker les valeurs calculé.

    Après avoir encore cherché, Je pense que je vais utiliser gtk_container_foreach pour faire les calcules au lieux de gtk_container_get_children ce qui réduit le nombre de "boucles for"

    Il ne me restera plus qu'a utiliser les signaux add et remove pour savoir quand mettre a jour les valeurs.