Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/12/2006, à 12:28

hpopols

Débutant GTK : n'affiche pas le bouton dans ma fenêtre?

Bonjours amis Ubunturos et Ubunturoses! (tien petit jeux de mots)

Voila, après avoir reçu une formation sur Visual C++ qui ne m'a pas franchement convaincu. (la formation)
Je me suis dis : "Aller réinstalle Anjuta mets toi au GTK+". Après de multiples déboires de dépendances (que je pense résolu) j'ai suivi ce cours : http://nicolasj.developpez.com/gtk/cours/?page=sommaire .

Je vous résume : je créé une fenêtre avec un bouton quitter dedans et c'est tout (pour commencer).
Problème : il affiche la fenêtre correctement mais pas le bouton!? Si vous avez une idée de la solution merci d'avance!

NB : Aucune erreur de compilation. Ni de warnings.

Voici le code:

main.c

#include <stdlib.h>

#include <gtk/gtk.h>

#include "callbacks.h"

int main (int argc, char **argv)

{

  GtkWidget *p_window = NULL;

  /* Initialisation de GTK+ */
  gtk_init (&argc, &argv);

  /* Creation de la fenetre principale de notre application */
  p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  g_signal_connect (G_OBJECT (p_window), "destroy", G_CALLBACK (cb_quit), NULL);
  {

    GtkWidget *p_button = NULL;
    p_button = gtk_button_new_from_stock (GTK_STOCK_QUIT);
    gtk_container_add (GTK_CONTAINER (p_window), p_button);
    g_signal_connect (G_OBJECT (p_button), "clicked", G_CALLBACK (cb_quit), NULL);

  }

  /* Affichage de la fenetre principale */
  gtk_widget_show_all (p_window);

  /* Lancement de la boucle principale */
  gtk_main ();
clude <gtk/gtk.h>



void cb_quit (GtkWidget *, gpointer);



#endif /* not H_CALLBACK */


  return EXIT_SUCCESS;
}

callbacks.h

#ifndef H_CALLBACK
#define H_CALLBACK
#include <gtk/gtk.h>

void cb_quit (GtkWidget *, gpointer);

#endif /* not H_CALLBACK */

callbacks.c

#include "callbacks.h"

void cb_quit (GtkWidget *p_widget, gpointer user_data)
{
  gtk_main_quit();

  /* Parametres inutilises */
  (void)p_widget;
  (void)user_data;
}

PS : Si vous connaissez de bons cours/tutoriels sur le programmation GTK+ je suis prenneur!

Dernière modification par hpopols (Le 14/12/2006, à 12:42)


Utilisateur Ubuntu #10362
Utilisateur Linux # 437311

Hors ligne

#2 Le 14/12/2006, à 15:39

any

Re : Débutant GTK : n'affiche pas le bouton dans ma fenêtre?

etonnant ! chez moi ca compile et execute sans pb , j'ai bien le bouton quitter qui apparait !

biensur en enlevant les lignes (pb de copier coller smile )suivantes du main.c:

/* 
clude <gtk/gtk.h>
void cb_quit (GtkWidget *, gpointer);
#endif /* not H_CALLBACK */
*/

et avec le Makefile qui va bien :

EXECNAME        =       gtk_app2

OBJS            =       main.o callbacks.o

OPTIMIZATION    =       -O2
#DEBUG          =       -g -ggdb

DEBUGLIB        =        `pkg-config --libs gtk+-2.0`

LIB             =        `pkg-config --libs gtk+-2.0`   

CFLAGS=-c -Wall $(DEBUG) $(OPTIMIZATION) `pkg-config --cflags gtk+-2.0` 
LDFLAGS=-Wall $(DEBUG)  $(LIB)

CC = gcc
RM = rm -f

all: $(OBJS)

        $(CC) $(OBJS) $(LDFLAGS) -o $(EXECNAME)

main.o : main.c 

callbacks.o : callbacks.c 

clean:
        $(RM) $(OBJS) core $(EXECNAME) $(SESSION)

depend:
        echo "No dependences"

sinon pours un introduction a gtk 2 , ce lien me semble un bon depart.

http://www.gtk-fr.org/wakka.php?wiki=PageAccueil

#3 Le 15/12/2006, à 18:41

hpopols

Re : Débutant GTK : n'affiche pas le bouton dans ma fenêtre?

En fait j'utilisais anjuta pour compiler et il génère automatiquement son makefile, j'ai essayé de compiler à la main avec ton makefile je me retrouve toujours avec la même fenêtre! sad

Pour l'instant je laisse ce petit programme de coté car je ne maitrise pas super bien la notion de callbacks, signaux, widget et je veux partir sur de solides bases. Je vais donc me plonger dans le cours que tu m'as indiqué (j'ai déjà commencé).

Merci pour ton aide, l'erreur vient de moi ou d'une configuration quelconque. Je vais essayer de résoudre ça. Rien de tel qu'un petit bug pour remettre en question des acquis! roll

Bonne soirée et encore merci


Utilisateur Ubuntu #10362
Utilisateur Linux # 437311

Hors ligne