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 :

comment modifier les widgets dans une fenètre??


Sujet :

GTK+ avec C & C++

  1. #1
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut comment modifier les widgets dans une fenètre??
    comment fait-on pour changer differents détails d'une fenètre apres sa création?
    en fait,j'ai une fenètre principale de mon appli,je veux qu'en cliquant sur un bouton ça change de page,c'est à dire que le contenu de la fenetre change mais pas par exemple la barre de menu...(un peu comme un navigateur web genre IE).
    mon idée est de reprendre la mème fenetre mais en changeant ses widgets.
    est-il possible de detruire tous les widgets d'une table d'un coup?
    faut-il fermer la fenetre principale et en ouvrir une autre?cela se verra-t-il lors de l'utilisation?

    merci beaucoup pour votre aide


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: [GTK+]comment modifier les widgets dans une fenètre??
    Salut,
    il ya plusieurs possibilités : utiliser une page à onglet (GtkNoteBook), tu doit pouvoir cacher les onglets et naviguer grâce à des bouttons (gtk_notebook_set_current_page) sinon il est possible de détruire des widgets grâce à gtk_widget_destroy et ensuite d'en recréer des nouveaux. A vérifier, mais je pense que si tu détruit un conteneur (box, table...) leur contenue est détruit (il n'est plus visible ça c'est sûr!).
    Et une dernière : jouer avec les box (afficher/cacher celle que tu désire sans pour autant les détuire).

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut Re: [GTK+]comment modifier les widgets dans une fenètre??
    Citation Envoyé par gege2061
    Salut,
    il ya plusieurs possibilités : utiliser une page à onglet (GtkNoteBook), tu doit pouvoir cacher les onglets et naviguer grâce à des bouttons (gtk_notebook_set_current_page)
    non ça ne me convient pas
    sinon il est possible de détruire des widgets grâce à gtk_widget_destroy et ensuite d'en recréer des nouveaux. A vérifier, mais je pense que si tu détruit un conteneur (box, table...) leur contenue est détruit (il n'est plus visible ça c'est sûr!).
    j'ai opté pour cette methode,ça marche mais je galère un peu avec mes fonctions callback et mes variables globales
    Et une dernière : jouer avec les box (afficher/cacher celle que tu désire sans pour autant les détuire).
    ça,je sais pas faire.

    là le problème que j'ai c'est avec la taille de ma fenetre,je l'affiche en plein ecran,mais quand je clique sur le petit carré en haut à droite(à gauche de la croix pour fermer),au lieu de reduire la taille de la fenetre,j'obtiens une fenetre encore plus grande!!
    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_window_set_default_size(pfenetre,320,200);
    mais ça ne marche pas
    et en plus quand je modifie les dimensions et que je recompile,ça ne les prends pas en compte!!


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par afrikha
    ça,je sais pas faire.
    Avec gtk_widget_show et gtk_widget_hide (ou leurs cousines *_all).

  5. #5
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    voici mon code allégé.
    essayer de mettre une image(assez grande) en fond d'ecran,puis reduisez la taille de l'ecran.Normalement vous allez voir apparaitre deux bandes(horizontale et verticale)où il n'y a rien!!!
    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
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    GtkWidget *pfenetre;
        GtkWidget *pbarmenu;
        GtkWidget *ptable;
        GtkWidget *pmenuitem;
        GtkWidget *pmenu;
        GtkWidget *ptexte;
        GtkWidget *pbouton01;
        GtkWidget *pbouton02;
        GtkWidget *pbouton03;
        GtkWidget *pbouton04;
        GtkWidget *pbouton05;
        GtkWidget *pbouton06;
        GtkWidget *pimage;
        GtkWidget *pcadre01;
        GtkWidget *pcadre02;
        GtkWidget *pcadre03;
        GtkWidget *pcadre04;
        GtkWidget *pcadre05;
        GtkWidget *pcadre06;
        GtkWidget *pvbox;
        GtkWidget *pvbox1;
        gchar *texte;
     
    int main(int argc, char **argv)
    {
     
        /*creation du widget (ici c'est une fenetre)*/
     
        /* Initialisation de GTK+ */
        gtk_init(&argc, &argv);
        /*declaration des fonctions*/
        void accueil(void);
        void session(GtkWidget *pWidget, gpointer pData);
        /*creation de la fenetre*/
        pfenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        pbarmenu=gtk_menu_bar_new();
        gtk_window_resize(GTK_WINDOW(pfenetre),320,200);
     
     
     
     
     
     
        gtk_window_set_resizable(GTK_WINDOW(pfenetre),TRUE);
     
     
        /*afficher la fenetre en plein ecran*/
        gtk_window_maximize(GTK_WINDOW(pfenetre));
        /*creation de la Vbox et insertion dans la fenetre*/
        pvbox=gtk_vbox_new(FALSE,0);
        gtk_container_add(GTK_CONTAINER(pfenetre),pvbox);
        pvbox1=gtk_vbox_new(TRUE,0);
        gtk_box_pack_end(GTK_BOX(pvbox),pvbox1,TRUE,TRUE,0);
        /*creation du menu fichier*/
        pmenu=gtk_menu_new();
        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_separator_menu_item_new();
        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu),pmenuitem);
        pmenuitem=gtk_menu_item_new_with_label("Quitter");
        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu),pmenuitem);
        pmenuitem=gtk_menu_item_new_with_label("Fichier");
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(pmenuitem),pmenu);
        gtk_menu_shell_append(GTK_MENU_SHELL(pbarmenu),pmenuitem);
        /*creation du menu à propos*/
        pmenu=gtk_menu_new();
        pmenuitem=gtk_menu_item_new_with_label("informations");
        gtk_menu_shell_append(GTK_MENU_SHELL(pmenu),pmenuitem);
        pmenuitem=gtk_menu_item_new_with_label("A propos");
        gtk_menu_item_set_submenu(GTK_MENU_ITEM(pmenuitem),pmenu);
        gtk_menu_shell_append(GTK_MENU_SHELL(pbarmenu),pmenuitem);
        /*mise dans les box*/
        gtk_box_pack_start(GTK_BOX(pvbox),pbarmenu,FALSE,FALSE,0);
     
        accueil();
        /*affichage de la fenetre*/
        gtk_widget_show_all(pfenetre);
     
        gtk_window_set_title(GTK_WINDOW(pfenetre),"STOCK MANAGER- Accueil");
     
        /*connection du signal de la fenetre*/
        g_signal_connect(G_OBJECT(pfenetre),"destroy",G_CALLBACK(gtk_main_quit),NULL);
            /*lancement de la boucle evenementielle*/
        gtk_main();
        return EXIT_SUCCESS;
    }
     
     
    void accueil(void)     
    {
        gtk_widget_destroy(ptable);
        ptable=gtk_table_new(19,10,TRUE);
        gtk_box_pack_end(GTK_BOX(pvbox1),ptable,TRUE,TRUE,0);
     
     
        /*creation de l'arriere plan*/
        pimage=gtk_image_new_from_file("IMAGE.png");
        gtk_table_attach(GTK_TABLE(ptable),pimage,0,10,0,19, GTK_EXPAND, GTK_EXPAND,0,0);
     
        gtk_widget_show_all(pvbox1);
    }
    j'espere que l'un d'entre vous trouvera la solution,parce que là je suis désesperé.
    En tout cas merci de votre aide que j'apprecie beaucoup


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Je viens de tester est en fait je n'est pas de bandes. De plus, impossible de réduire la taille de la fenetre, sauf en la maximisant, là alors l'image se redimenssionne mais on perd des partie qui ne sont pas affichées et là encore aucune bandes !
    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 !

  7. #7
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Citation Envoyé par CSoldier
    Je viens de tester est en fait je n'est pas de bandes. De plus, impossible de réduire la taille de la fenetre, sauf en la maximisant, là alors l'image se redimenssionne mais on perd des partie qui ne sont pas affichées et là encore aucune bandes !
    si l'utilisateur final a la "mauvaise" idée d'agrandir la fenetre;le resultat n'est pas trés beau à voir.
    moi j'utilise une image qui a à peu près la taille de mon ecran.les bandes que j'obtiens c'est,comment expliquer??
    supposons que la fenetre soit une rectangle,d'accord?,l'image que je mets occupe tout l'espace qui lui soit alloué.
    ETAPE1:lancement du programme
    tout ce passe bien,l'image est en place,ainsi que tous les widgets qui sont au-dessus(en fait l'image est dans une table qu'elle occupe entierement,les widgets aussi sont dans la meme table).
    ETAPE2:agrandissement de la fenetre
    en realité,je clique sur le petit carré dans le coin superieur droit(qui est sensé retrecir l'image),resultat la fenetre s'aggrandit!!!!
    et,alors pour schematiser,l'image apparait dans un 2eme rectangle.
    Ce rectangle a le meme coin inferieur droit que la fenetre mais des dimensions plus petites que celle-ci,d'où l'apparition des deux bandes.
    ces deux bandes sont vides,on dirait que la fenetre est vierge à cet endoit là.
    j'espere que j'ai été assez clair,j'ai essayé d'expliquer du mieux que je pouvais.
    merci à tous pour votre aide,qui me reconforte et me redonne espoir


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/01/2006, 08h34
  2. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  3. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51
  4. Comment afficher les toolTipText dans une zone de statut ?
    Par nicok01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 28/01/2005, 13h32

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