Partage
  • Partager sur Facebook
  • Partager sur Twitter

[GTK] Positionnement par tables

Sujet résolu
    23 octobre 2008 à 22:13:08

    Salut !


    J'essaye de me mettre tant bien que mal à GTK, et je bute sur le placement de mes widgets.

    Dans mon exemple, je souhaite avoir une toolbar (OK), une zone de texte de taille définie (OK), et un bouton radio en dessous de la zone texte (PAS OK !).

    Dès que j'ajoute le bouton radio, ma fenêtre se déforme et n'a plus du tout la taille souhaitée.
    Je vois vraiment pas d'où ça vient ...


    Serait-ce possible de m'aider à trouver ce qui cloche???

    Merci d'avance !


    PS : Voici le code en question
    #include <stdlib.h>
    #include <gtk/gtk.h>
    
    int main(int argc,char **argv)
    {
        GtkWidget* pWindow;
        GtkWidget* pTable;
        GtkWidget* pHbox;
        GtkWidget* pFrame;
        GtkWidget* pRadio1;
        GtkWidget* pTextbox;
        GtkWidget* pToolbar;
        gchar* sTitre;
    
        gtk_init(&argc,&argv);
        sTitre = g_locale_to_utf8("Test1", -1, NULL, NULL, NULL);
        pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pWindow), sTitre);
        gtk_window_set_resizable(GTK_WINDOW(pWindow), FALSE);
    
    
        pTable=gtk_table_new(400,465,TRUE);
        gtk_container_add(GTK_CONTAINER(pWindow), GTK_WIDGET(pTable));
    
        /* Creation de la barre d'outils */
        pToolbar = gtk_toolbar_new();
        gtk_toolbar_append_element (GTK_TOOLBAR(pToolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, "Edition", NULL, NULL, NULL, NULL, NULL);
        gtk_toolbar_append_item (GTK_TOOLBAR(pToolbar), "Affichage", NULL, NULL, NULL, NULL, NULL);
        gtk_toolbar_append_element (GTK_TOOLBAR(pToolbar), GTK_TOOLBAR_CHILD_BUTTON, NULL, "?", NULL, NULL, NULL, NULL, NULL);
        gtk_table_attach(GTK_TABLE(pTable), pToolbar, 0, 465, 0, 40, GTK_EXPAND | GTK_FILL, GTK_EXPAND, 0, 0);
    
    
    
        pFrame = gtk_frame_new(NULL);
    
       /*création de la textbox */
       pTextbox = gtk_text_view_new();
       gtk_widget_set_size_request(pTextbox, 455, 180);
       gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(pTextbox), GTK_WRAP_WORD_CHAR);
       gtk_text_view_set_editable(GTK_TEXT_VIEW(pTextbox), TRUE);
       gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(pTextbox), FALSE);
    
        gtk_container_add(GTK_CONTAINER(pFrame), pTextbox);
        gtk_table_attach(GTK_TABLE(pTable), pFrame, 5, 460, 10, 250, GTK_SHRINK, GTK_SHRINK, 0, 0);
    
    
        pFrame = gtk_frame_new(NULL);
        pHbox = gtk_hbox_new(FALSE, 0);
    
        gtk_container_add(GTK_CONTAINER(pFrame),pHbox);
        pRadio1 = gtk_radio_button_new_with_label(NULL, "Hex");
    
        gtk_box_pack_start(GTK_BOX(pHbox), pRadio1, FALSE, FALSE, 0);
    
    
        gtk_table_attach(GTK_TABLE(pTable), pFrame, 5, 35, 250, 280, GTK_SHRINK, GTK_SHRINK, 0, 0);
    
        g_free(sTitre);
        gtk_widget_show_all(pWindow);
        g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    
        gtk_main();
    
        return EXIT_SUCCESS;
    }
    

    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2008 à 22:43:56

      La raison serait qu'il découpe ta table en 2 zone de taille egale, meme si ton radiobutton ne fait que 20 pixel de haut et ta textbox 500 pixel de haut.

      Donc essayer de jouer avec les propriété de la table pour qu'il ne fasse pas de redimmensionnement automatique, ou utiliser un autre container plus flexible, je ne maitrise pas trop les containers

      EDIT: Ptete les GtkBox http://www.gtk-fr.org/wakka.php?wiki=LesBox
      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2008 à 23:11:16

        C'était ça ! Dernier paramètre de gtk_table_new à FALSE et c'est bon :)


        Merci beaucoup !
        • Partager sur Facebook
        • Partager sur Twitter

        [GTK] Positionnement par tables

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown