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

Langage C++ Discussion :

problème d' "assertion" avec GTK+


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut problème d' "assertion" avec GTK+
    Bonjour à tous !

    je code en C++ en utilisant GTK+ (chose que je vous déconseille d'ailleur, utiliser GTKmm semblerai plus approprié).

    dans une fenêtre, j'ai un checkButton. je souhaite, lorsque l'utilisateur clique (donc active ou désactive le bouton) récupérer l'état de ce widget. Pour faire une vérification, je veux afficher sur la sortie standards l'état du bouton, et là, paf, voila l'erreur:



    Uploaded with ImageShack.us

    voici le code correspondant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    boolean buttonCompression(GtkBuilder* p_builder){
    	GObject *check=gtk_builder_get_object(p_builder,"ChoixCompression");
    	boolean rep=gtk_toggle_button_get_mode(GTK_TOGGLE_BUTTON(check));
    	if (rep==true){
    		return true;
    		cout<<true<<endl;}
    	else{
    		return false;
    		cout<<false<<endl;}
    }
    void signalCompression(GtkBuilder * p_builder){
    	g_signal_connect(gtk_builder_get_object(p_builder,"ChoixCompression"),"clicked",G_CALLBACK(buttonCompression),p_builder);
    }
    je précise que j'élabore mon interface graphique avec Glade, puis j'importe le fichier xml dans mon code (à un autre endroit).
    je précise aussi que j'ai la meme erreur à un autre endroit du code.

    merci de votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    vraiment personne ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ton objet p_builder est invalide : montre le code appelant.
    D'autre part l'opération de sortie ne risque pas de marcher : elle est effectuée après le retour de la fonction !

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    lequel de p_builder ?

    voici le main où je récupère le fichier xml et que je fais l'appel de fonction "buttonCompression"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    int main(int argc,char ** argv)
    {
    	gtk_init(& argc,& argv);
     
    	GtkBuilder * fenetre=NULL;
    	GError * p_err=NULL;
    	fenetre = gtk_builder_new();
    	if (fenetre!=NULL){
    		gtk_builder_add_from_file(fenetre,"fenetre_parametre.xml",& p_err);
    		if (p_err==NULL){
    			GtkWidget * p_win = (GtkWidget *)gtk_builder_get_object(fenetre,"fenetreParametre");
    			/*signalOk(fenetre);
    			signalAnnuler(fenetre);*/
    			signalAjouter(fenetre);
    			signalCompression(fenetre);
    			signalSupprimer(fenetre,p_win);
    			signalRemplirZone(fenetre,false),
    			signalNomUtilisateur(fenetre);
    			gtk_widget_show_all(p_win);

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 32
    Points
    32
    Par défaut
    problème résolu. J'ai changé (radicalement ?) le code. je le mets, ça pourrait un jour servir à quelqu'un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //récupération du signal "toggled" du widget
    void signalCompression(GtkBuilder * p_builder){
    	g_signal_connect(gtk_builder_get_object(p_builder,"ChoixCompression"), "toggled", G_CALLBACK(buttonCompression), NULL);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    boolean buttonCompression(GtkWidget *choix){
    	gboolean bEtat;
        gboolean bInconsistent;
    	 /* Recuperation de l etat du bouton */
        bEtat = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(choix));
        boolean etatChoix=bEtat;
    	cout<<etatChoix<<endl;
    	return etatChoix;		
    }
    /*je choisi de retourner le booléen pour l'utilisation que j'en ai dans mon programme*/

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

Discussions similaires

  1. Problème de fuite de mémoire avec GTK+
    Par gwenhael dans le forum GTK+
    Réponses: 15
    Dernier message: 03/01/2008, 16h22

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