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++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    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
    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

  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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    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 Expert
    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
    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!!

  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 : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    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 Expert
    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
    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

  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 : 48
    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
    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 Expert
    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
    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

+ 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