IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Fonction pour afficher un compteur


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut Fonction pour afficher un compteur
    Bonjour,

    je souhaite intégré dans mon programme un compteur qui compte le nombre de seconde depuis le lancement du programme, et pour cela j'ai utilisé g_timeout_add, mais j'ai un petit problème :

    Enfaite le compteur est affiché dans un bouton, il faut donc que toute les 1 seconde je change le label du bouton en l'incrémentant, mais avec la fonction g_timeout_add je ne peux envoyer qu'une chose à ma fonction ( mon bouton ) .
    Au début le label du bouton contient 0, si je fais gtk_button_get_label je peux récuperer ce 0 mais je ne sais pas comment le stocker afin de l'incrémenter.

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu peux soit utiliser une structure où tu stockes ta valeur et ton bouton et tu passes ça à ta fonction callback, ou bien tu peux récupérer le texte courant du bouton, le convertir en chiffre (avec strtoul par exemple) puis l'incrémenter et le réafficher.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    merci pour ton aide.
    J'ai réussi a convertir le label du bouton en un int, je l'ai incrémenter mais je ne sais pas comment le reconvertir en un gchar pour pouvoir faire gtk_button_set_label(GTK_BUTTON(temps), mavariable).

    Voila ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    char *p_conv = NULL;
     
       /* conversion en base decimale */
       a = (int)strtol(gtk_button_get_label(GTK_BUTTON(bouton)), &p_conv, 10);
     
       /* conversion reussie */
       if(*p_conv == 0)
       {
    	a++;
          // Il faut que je fasse la convertion inverse ici
     
       }

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     /* conversion reussie */
       if(*p_conv == 0)
       {
            gchar *label;
    	a++;
            label = g_strdup_printf ("%d", a);
            gtk_button_set_label (button, label);
            g_free (label);
       }
    quelque chose comme ça devrait faire l'affaire

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Par défaut
    Merci pour ton aide, ça fonctionne maintenant,
    j'ai une autre question le code compile bien et le programme fait ce que je veux, par contre ma fonction temps renvoi la valeur TRUE, car si je renvoi autre chose g_timeout_add s'arrète, sauf que quand je compile j'ai un warning :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    main.c: In function ‘ftemps’:
    main.c:209: warning: return makes pointer from integer without a cast
    Dans le main() j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_timeout_add(1000,(GSourceFunc)ftemps, temps);
    et ma fonction est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    GSourceFunc ftemps(GtkWidget *bouton)
    {
     
    .
    .
    .
    .
    .
    return FALSE	;
    }
    C'est pas vraiment génant mais comme j'ai un projet à rendre, j'aimerais bien qu'il ny ai aucun warning.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Oui, le prototype de ta fonction indique que tu veux qu'elle renvoie un pointeur, change le pour indiquer que tu souhaites renvoyer un gboolean et ça devrait fonctionner comme tu le souhaites

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/02/2010, 10h25
  2. [Dates] Fonction pour afficher les dernières news
    Par Justone22 dans le forum Langage
    Réponses: 23
    Dernier message: 04/08/2008, 22h57
  3. Fonction pour afficher une image
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2007, 19h07
  4. Réponses: 9
    Dernier message: 17/02/2006, 11h04

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