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

Superposer des widget sur Image en arrière plan dans une event_box


Sujet :

GTK+

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Superposer des widget sur Image en arrière plan dans une event_box
    Bonjour, voilà j'ai un problème, cherche à mettre une image en arrière-plan grâce à une event_box, puis mettre par-dessus cette event_box, plusieurs cadres ou bouton. Le problème c'est que peu importe ce que je fais, l'image que je veux mettre en arrière-plan cache toujours mes autre widget.

    Merci de votre aide !!

    Mon code:


    /* Déclaration du widget */
    GtkWidget *pWindow;
    GtkWidget *ptable[5];
    GtkWidget *pimage[2];
    GtkWidget *pbouton[10];
    GtkWidget *pNotebook;
    GtkWidget *pLabel[4];
    GtkWidget *pTabLabel[4];
    GtkWidget *pFrame[4];

    GtkWidget *event_box;
    GtkWidget *pVBox;

    GdkPixbuf *icon;
    gchar *sLabel[4];
    gchar *sTabLabel[4];

    gtk_init(&argc,&argv);

    /* Création de la fenêtre */
    pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    /* Définition de la position */
    gtk_window_set_position(GTK_WINDOW(pWindow), GTK_WIN_POS_CENTER);
    /* Définition de la taille de la fenêtre*/
    gtk_window_maximize (GTK_WINDOW(pWindow));
    /* Titre de la fenêtre */
    gtk_window_set_title(GTK_WINDOW(pWindow), "Test");
    /* Connexion du signal "destroy" */
    g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(OnDestroy), NULL);

    /* Création de la table de base*/
    ptable[0]=gtk_table_new(30,30,TRUE);
    gtk_container_add(GTK_CONTAINER(pWindow),GTK_WIDGET(ptable[0]));

    /* Creation du GtkNotebook */
    pNotebook = gtk_notebook_new();
    gtk_table_attach_defaults(GTK_TABLE(ptable[0]), pNotebook, 1, 29, 2, 29);
    /* Position des onglets : en haut */
    gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pNotebook), GTK_POS_TOP);


    /*Première onglet*/
    sLabel[0] = g_strdup_printf("Je suis le GtkLabel numero 1");
    sTabLabel[0] = g_strdup_printf("Parametres & Resultats");
    /* Creation des differents GtkLabel */
    pLabel[0] = gtk_label_new(sLabel[0]);
    pTabLabel[0] = gtk_label_new(sTabLabel[0]);

    /* Création de la table onglet 1*/
    ptable[1]=gtk_table_new(30,30,TRUE);
    gtk_notebook_prepend_page_menu(GTK_NOTEBOOK(pNotebook),GTK_WIDGET(ptable[1]), pTabLabel[0], pLabel[0]);
    /* Insertion de la page */
    g_free(sLabel[0]);
    g_free(sTabLabel[0]);

    /* Création d'un EventBox et ajout de celui-ci dans la table1. */
    event_box = gtk_event_box_new ();
    gtk_table_attach_defaults(GTK_TABLE(ptable[1]),event_box,1,29,1,6);
    /* Mise en place d'un arrière plan dans event-box */
    pimage[1] = gtk_image_new_from_file (".\\image\\interactive panel.jpg");
    gtk_container_add(GTK_CONTAINER(event_box),pimage[1]);

    /*Création de premier gtkFrame*/
    pFrame[0]=gtk_frame_new("Interactive Panel");
    gtk_frame_set_shadow_type(GTK_FRAME(pFrame[0]),GTK_SHADOW_OUT);
    gtk_table_attach_defaults(GTK_TABLE(ptable[1]),pFrame[0],1,15,1,6);
    /*gtk_container_add(GTK_CONTAINER(event_box),pFrame[0]);*/

    gtk_widget_show (event_box);

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour,

    quelle version de GTK utilises tu ? En GTK 3, tu peux utiliser le moteur de thèmes CSS pour faire cela:
    http://www.gtkforums.com/viewtopic.p...images#p195278

    En GTK 2, tu peux utiliser gdk_window_set_back_pixmap (dont voici un exemple d'utilisation en python). Mais ça doit aussi pouvoir se faire avec cairo.

    Dans tous les cas, n'essaie pas d'empiler les widgets, GTK ne gère pas les niveaux de profondeurs. Seul GtkLayout permet de superposer des choses, mais alors il faut faire la gestion de l'emplacement de chaque widget au pixel près, ce qui est une très mauvaise idée et fait perdre tout son intérêt à GTK.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

Discussions similaires

  1. Image en arriére plan d'une div
    Par jawaad dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 04/01/2011, 22h31
  2. [2D/3D] superposer des widgets sur un QGLWidget ?
    Par divide dans le forum Qt
    Réponses: 2
    Dernier message: 10/05/2010, 07h59
  3. Réponses: 5
    Dernier message: 05/10/2009, 13h05
  4. [debutant]placer une image en arrière plan d'une JFrame
    Par ashash dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 24/09/2006, 14h18

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