1. #1
    Membre régulier Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : septembre 2016
    Messages : 50
    Points : 73
    Points
    73

    Par défaut [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

    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2009
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2009
    Messages : 1 281
    Points : 1 910
    Points
    1 910

    Par défaut

    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 Avatar de Persistant
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    septembre 2016
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : septembre 2016
    Messages : 50
    Points : 73
    Points
    73

    Par défaut

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déterminer le nombre de mots dans deux fichiers de texte
    Par daniel1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 14/12/2012, 12h51
  2. déterminer le nombre d'auteurs dans des tables différentes
    Par fraisa1985 dans le forum PHP & MySQL
    Réponses: 7
    Dernier message: 28/11/2012, 17h31
  3. Déterminer le nombre de secondes dans un temps donné.
    Par SpeedOverflow dans le forum Débuter
    Réponses: 4
    Dernier message: 17/05/2011, 18h54
  4. Réponses: 1
    Dernier message: 09/11/2009, 13h30
  5. Nombre de widget dans un vertical panel
    Par corbel88 dans le forum GWT
    Réponses: 12
    Dernier message: 25/04/2008, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo