Bonjour à tous,

Je développe actuellement une grosse application avec de nombreux labels à afficher. Pour gérer de manière souple (et efficace) leur disposition, j'utilise des gtk_table. Ca marche bien.

Parmi les widgets que je veux placer, j'utilise des gtk_hseparator et des gtk_vseparator, mais je viens de me rendre compte que - pour les placer dans la table - ceux-ci, bien qu'ils soient des lignes, ont besoin d'une certaine "épaisseur" (de une unité de ligne ou de colonne). Voici un exemple qui devrait être plus clair :

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
/* travail sur les tables et les lignes */
#include <stdlib.h>
#include <gtk/gtk.h>
 
int main (int argc, char *argv[])
{
  GtkWidget *win;
  GtkWidget *pTable;
  GtkWidget *hline;
  GtkWidget *vline;
  GtkWidget *label[3][2];
  int i,j;
  char tmp[10];
 
  /* Initialize GTK+ */
  gtk_init (&argc, &argv);
 
  /* Creating the main window */
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (win), 8);
  gtk_window_set_title (GTK_WINDOW (win), "testing..");
  gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
  g_signal_connect (win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
/* creation des labels */
for (i=0;i<3;i++)
    for (j=0;j<2;j++)
{
    (void)sprintf(tmp,"%d:%d",i,j);
    label[i][j]=gtk_label_new(tmp);
}
 
  /* creation d'une ligne horizontale */
  hline=gtk_hseparator_new();
  /* creation d'une ligne verticale */
  vline=gtk_vseparator_new();
 
/*création de la table mise des widgets dedans */
  pTable=gtk_table_new(3,2,FALSE);
for (i=0;i<3;i++)
    for (j=0;j<2;j++)
      gtk_table_attach(GTK_TABLE(pTable), label[i][j], i,i+1,j,j+1,GTK_EXPAND|GTK_FILL,GTK_EXPAND,0,0 );
 
 gtk_table_attach(GTK_TABLE(pTable), hline, 0,3,1,2,GTK_EXPAND|GTK_FILL,GTK_EXPAND,0,0 );
 gtk_table_attach(GTK_TABLE(pTable), vline, 1,2,0,2,GTK_EXPAND,GTK_EXPAND|GTK_FILL,0,0 );
 
/* on ajoute la table dans la fenetre */
 gtk_container_add (GTK_CONTAINER (win), pTable);
 
  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}
Du coup, évidement, les lignes tombent au beau milieu des "cellules" (ici, dans l'exemple, des labels), et ca ne va donc pas.

L'utilisation de cadres (gtk_frame) ne résoud guère mon problème.

Bref, ma question est donc: Comment faire pour mettre des lignes "entre" les cellules. Comme ceci ne semble pas être possible, quelle autre(s) solution(s) pourrais-je adopter?

D'avance merci pour toute aide sur ce point.

Eric.