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 :

Probleme saisie et table


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut Probleme saisie et table
    Bonjour tout le monde.

    Voila mon code :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
     
    void OnQuitter(GtkWidget* widget, gpointer data);
    void OnAbout(GtkWidget* widget, gpointer data);
    void fenetreregles(GtkWidget *regles,gpointer pdata);
     
    static GtkWidget *pToolbar = NULL;
     
    int main(int argc, char **argv)
    {
       GtkWidget *pWindow;
       GtkWidget *pVBox;
       GtkWidget *pTable;
       GtkWidget *pMenuBar;
       GtkWidget *pMenu;
       GtkWidget *pMenuItem;
     
       /*concerant la grille*/
       GtkWidget *pBoxGrilleV[9];
       GtkWidget *pBoxGrilleH;
     
       /*pour les saisies*/
       GtkWidget *pSaisie[9][9];
     
     
       int i,j;
     
       gtk_init(&argc, &argv);
     
       /* Creation de la fenetre */
       pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
       gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
       gtk_window_set_title(GTK_WINDOW(pWindow), "                                SUDOKU");
       gtk_window_set_default_size(GTK_WINDOW(pWindow), 400, 300);
       g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
       pVBox = gtk_vbox_new(FALSE, 0);
       gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
     
     
     
     
    /*---------------------------------------------------BARRE DE MENU---------------------------------------------------------------*/
        /**** Creation du menu ****/
     
        /* ETAPE 1 */
        pMenuBar = gtk_menu_bar_new();
        /** Premier sous-menu **/
        /* ETAPE 2 */
        pMenu = gtk_menu_new();
        /* ETAPE 3 */
        pMenuItem = gtk_menu_item_new_with_label("Nouveau");
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
     
        pMenuItem = gtk_menu_item_new_with_label("Ouvrir");
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
     
        pMenuItem = gtk_menu_item_new_with_label("Enregistrer");
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
     
        pMenuItem = gtk_menu_item_new_with_label("Fermer");
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
     
        pMenuItem = gtk_menu_item_new_with_label("Quitter");
        g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnQuitter), (GtkWidget*) pWindow);
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
        /* ETAPE 4 */
        pMenuItem = gtk_menu_item_new_with_label("Fichier");
        /* ETAPE 5 */
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
        /* ETAPE 6 */
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
     
        /** Second sous-menu **/
        /* ETAPE 2 */
        pMenu = gtk_menu_new();
        /* ETAPE 3 */
        pMenuItem = gtk_menu_item_new_with_label("A propos de...");
        g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(OnAbout), (GtkWidget*) pWindow);
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
        /* ETAPE 4 */
        pMenuItem = gtk_menu_item_new_with_label("?");
        /* ETAPE 5 */
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
        /* ETAPE 6 */
        gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
    /*------------------------------------------------------FIN BARRE DE MENU-----------------------------------------------------*/
     
     
     
     
     
       /* Creation des minibox qui sont dans la grille*/
          for(i=0;i<9;i++)
          pBoxGrilleV[i]= gtk_vbox_new(FALSE, 0);
     
          pBoxGrilleH= gtk_hbox_new(FALSE, 0);     //Horizontale
     
       /*mettre les 9 box verticales dans la box horitale*/
       for(i=0;i<9;i++)
          gtk_box_pack_start(GTK_BOX(pBoxGrilleH),pBoxGrilleV[i], FALSE, FALSE, 0);
     
       /*initialisation des empty*/
       for(i=0;i<9;i++)
       for(j=0;j<9;j++)
       {
          pSaisie[i][j]=gtk_entry_new(); //initialisation des pSaisie
          gtk_entry_set_max_length(GTK_ENTRY(pSaisie[i][j]),1); //On borne le nombre de caractere a 1.
          gtk_entry_set_visibility(GTK_ENTRY(pSaisie[i][j]),TRUE);//les caracteres de la zone sont visibles
          gtk_entry_set_editable(GTK_ENTRY(pSaisie[i][j]),TRUE);//l'utilisateur peut ecrire dans la zone
          gtk_box_pack_start(GTK_BOX(pBoxGrilleV[i]), pSaisie[i][j],FALSE, FALSE, 0);
       }
     
     
     
       /* Creation et insertion de la table 10 lignes 10 colonnes et il faudra ensuite mettre la grille dans la case (2,2)*/
       pTable=gtk_table_new(10,10,TRUE);
          gtk_box_pack_start(GTK_BOX(pVBox),pTable, FALSE, FALSE, 0);
     
          gtk_table_attach(GTK_TABLE(pTable),pBoxGrilleH,2,8,1,7,GTK_EXPAND,GTK_EXPAND,0,0);
     
     
     
     
     
       gtk_widget_show_all(pWindow);
     
       gtk_main();
     
       return EXIT_SUCCESS;
    }
     
     
    void fenetreregles(GtkWidget *regles,gpointer pdata)
    {
          GtkWidget *pWindow;
          GtkWidget *pLabel;
     
       /* Creation de la fenetre */
       pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
       gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
       gtk_window_set_title(GTK_WINDOW(pWindow), "                                REGLES");
       gtk_window_set_default_size(GTK_WINDOW(pWindow), 400, 300);
     
     
     
        /* Creation du label avec g_locale_to_utf8 */
        pLabel=gtk_label_new(NULL);
     
        /* On utilise les balises */
        gtk_label_set_markup(GTK_LABEL(pLabel), "<span face=\"Courier New\"><b>Courier New 10 Gras</b></span>\n"
            "<span font_desc=\"Times New Roman italic 12\" foreground=\"#0000FF\">Times New Roman 12 Italique</span>\n");
     
        /* On centre le texte */
        gtk_label_set_justify(GTK_LABEL(pLabel), GTK_JUSTIFY_CENTER);
     
         /* On ajoute le label a l'interieur de la fenetre */
         gtk_container_add(GTK_CONTAINER(pWindow),pLabel);
     
         /* Affichage de la fenetre et de tout ce qu'il contient */
        gtk_widget_show_all(pWindow);
     
    }
     
    void OnQuitter(GtkWidget* widget, gpointer data)
    {
        GtkWidget *pQuestion;
     
        pQuestion = gtk_message_dialog_new(GTK_WINDOW(data),
            GTK_DIALOG_MODAL,
            GTK_MESSAGE_QUESTION,
            GTK_BUTTONS_YES_NO,
            "Voulez vous vraiment\n"
            "quitter le programme?");
     
        switch(gtk_dialog_run(GTK_DIALOG(pQuestion)))
        {
            case GTK_RESPONSE_YES:
                gtk_main_quit();
                break;
            case GTK_RESPONSE_NONE:
            case GTK_RESPONSE_NO:
                gtk_widget_destroy(pQuestion);
                break;
        }
    }
     
    void OnAbout(GtkWidget* widget, gpointer data)
    {
        GtkWidget *pAbout;
     
        pAbout = gtk_message_dialog_new (GTK_WINDOW(data),
            GTK_DIALOG_MODAL,
            GTK_MESSAGE_INFO,
            GTK_BUTTONS_OK,
            "Cours GTK+ 2.0\n"
            "http://www.lesite-fr.org");
     
        gtk_dialog_run(GTK_DIALOG(pAbout));
     
        gtk_widget_destroy(pAbout);
    }
    Mais quand je lance le programme la barre de menu n'apparrait pas

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Salut !


    C'est ce qui se passe quand on copie bêtement, à quel moment tu insère la barre de menu pMenuBar dans ton interface ? Moi je ne vois pas !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut
    Hum ok..

    il faut ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        /* Ajout du menu a la fenetre */
        gtk_box_pack_start(GTK_BOX(pVBox), pMenuBar, FALSE, FALSE, 0);
    Merci beaucoup.

    Puisqu'on y est aussi. Mes zones de saisie sont trop longues. La hauteur est bonne. Et je ne vois pas ou modifier cela.

    merci

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Bin ca c'est GTK+ qui calcul la taille des widgets suivant les arguments passés par exemple lors de la création d'un GtkBox et également lors de l'ajout avec la fonction gtk_box_pack_xxx, on n'a pas trop de contrôle là dessus mais on peut changer la taille préférée d'un widget avec la fonction gtk_widget_size_request mais là encore cela n'empêchera pas le redimensionnement des widget mais change seulement la taille préférée c'est tout !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut


    Chaque case de ma grille fait environs 4 cm de long c'est enorme ça alors que j'ai mis que y'avait un seul chiffre a mettre dedans

    Y'a pas un moyen de changer cela alors ?

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Tu peux contrôler un peu mieux la taille des widgets en les mettant dans un GtkTable
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Newbie PgSQL->Probleme Creation de table avec FOREIGN KEY
    Par ralkif dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 07/03/2006, 21h59
  2. Probleme requete ALTER TABLE
    Par syseval dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/04/2005, 12h49
  3. problème avec masque de saisie dans table
    Par porki dans le forum Access
    Réponses: 6
    Dernier message: 13/10/2004, 08h58
  4. PROBLEME AVEC UNE TABLE INTERBASE
    Par barro dans le forum InterBase
    Réponses: 1
    Dernier message: 22/09/2004, 08h16
  5. Probleme avec une table vide
    Par king dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/03/2004, 14h24

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