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 :

Faire une grille...


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé

    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut Faire une grille...
    Salut,
    J'apprend GTK+ en faisant une "version graphique" du jeu de la vie et je souhaite afficher une grille à peu près comme ça :



    Voici le code qui dessine la fenêtre...
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    void draw_window(struct _MainWindow *pApp)
    {
        /* Creation de la fenêtre */
        pApp->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pApp->pWindow), "Jeu de la vie");
        gtk_window_set_default_size(GTK_WINDOW(pApp->pWindow), 350, 350);
        g_signal_connect(G_OBJECT(pApp->pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Creation de la boite verticale gerant la fenetre */
        pApp->pVBox = gtk_vbox_new(FALSE, 0);
        gtk_container_add(GTK_CONTAINER(pApp->pWindow), pApp->pVBox);
     
        /* Creation de la boite horizontale acceuillant les boutons */
        pApp->pBtnHBox = gtk_hbox_new(TRUE, 0);
        gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pBtnHBox, FALSE, FALSE, 0);
     
        /* Mise en place des boutons */
        pApp->pStartBtn = gtk_button_new_from_stock(GTK_STOCK_MEDIA_PLAY);
        gtk_box_pack_start(GTK_BOX(pApp->pBtnHBox), pApp->pStartBtn, FALSE, FALSE, 0);
        /* g_signal_connect(G_OBJECT(pApp->pStartBtn), "clicked", G_CALLBACK(start_clicked), NULL); */
        pApp->pPrevBtn = gtk_button_new_from_stock(GTK_STOCK_GO_BACK);
        gtk_box_pack_start(GTK_BOX(pApp->pBtnHBox), pApp->pPrevBtn, FALSE, FALSE, 0);
        /* g_signal_connect(G_OBJECT(pApp->pPrevBtn), "clicked", G_CALLBACK(prev_clicked), NULL); */
        pApp->pNextBtn = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD);
        gtk_box_pack_start(GTK_BOX(pApp->pBtnHBox), pApp->pNextBtn, FALSE, FALSE, 0);
        /* g_signal_connect(G_OBJECT(pApp->pNextBtn), "clicked", G_CALLBACK(next_clicked), NULL); */
     
        pApp->pTable = gtk_table_new(T, T, TRUE);
        gtk_box_pack_start(GTK_BOX(pApp->pVBox), pApp->pTable, TRUE, TRUE, 0);
    }
    [EDIT] Lorsque l'on code une application GTK+ vaut-il mieux utiliser les types et fonctions de gtk+ telque gint, gchar, g_malloc pour tout le code ou les utiliser que pour les fonctions en rapport à GTK+ ???
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    struct _MainWindow
    {
        GtkWidget* pWindow;
        GtkWidget* pVBox;
        GtkWidget* pBtnHBox;
        GtkWidget* pTable;
        GtkWidget* pStartBtn;
        GtkWidget* pPrevBtn;
        GtkWidget* pNextBtn;
     
        GtkWidget* pCellLabel[T*T];
    };
     
    struct _LifeGame
    {
        grid map;
        int count[T][T];
     
        struct _LifeGame *pprev;
        struct _LifeGame *pnext;
    };
     
    ...
     
    pApp = (struct _MainWindow *) g_malloc(sizeof(struct _MainWindow));
    draw_window(pApp);
     
    pStart = (struct _LifeGame *) malloc(sizeof(struct _LifeGame));

  2. #2
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Salut

    Il faudra cliquer sur chaque case de la grille, non? Dans ce cas, je te conseille d'utiliser une Table pour mettre en forme la grille. Et dans la Table, tu mettras les images que tu veux et par dessus, tu mettras des boutons classiques. Les boutons ne se verront pas, quand tu cliqueras dessus, on ne verra pas le bouton "pressé" si t'ajoutes bien l'image avant le bouton.

    Concernant les types, autant utiliser les types GTK dans tout le programme. C'est juste une histoire de portabilité je crois.

    Nas'

  3. #3
    Membre confirmé

    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Par défaut
    Merci pour l'astuce des boutons elle me servira plus tard mais en fait ce que je veux faire c'est d'afficher le cadre de la grille car pour l'instant ma fenêtre ressemble à ça :


  4. #4
    Membre émérite
    Profil pro
    Eleveur de cornichons
    Inscrit en
    Juin 2002
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Eleveur de cornichons
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 074
    Par défaut
    Ah ok. Ba là je ne sais pas si GTK offre un widget pour créer une grille comme ça.
    Mais ce que tu peux faire, c'est créer une case dont les contours sont pointillés avec un logiciel d'imagerie que tu ajoutes dans chaque cellule de la table. Ca fera comme une grille je pense. C'est de la bidouille, je te l'accorde

    Nas'

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

Discussions similaires

  1. Faire une grille dans une jPanel
    Par Sylv3D dans le forum Débuter
    Réponses: 12
    Dernier message: 24/03/2010, 23h04
  2. JavaScript pour Photoshop cs2 - Faire une grille d'image pour tirages
    Par spaceodity dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 27/12/2009, 16h02
  3. Réponses: 7
    Dernier message: 03/08/2009, 15h06
  4. Faire une grille avec SDL
    Par holdboy dans le forum SDL
    Réponses: 13
    Dernier message: 26/12/2008, 19h47
  5. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44

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