Odpowiada Ci poniższy kod ?
#include <gtk/gtk.h>
#define WIERSZE 25
#define KOLUMNY 2
int main (int argc, char *argv[])
{
GtkWidget *okno, *przesuwne_okno, *kontener_vbox;
GtkWidget *pasek_menu, *plik_menu;
GtkWidget *plik, *wyjscie;
GtkWidget *tabela, *etykieta, *pole_tekstowe;
guint i, j;
gtk_init (&argc, &argv);
okno = g_object_new ( GTK_TYPE_WINDOW, "window-position", GTK_WIN_POS_CENTER, "title", "Przewijana tabela",
"default-width", 250, "default-height", 100, NULL );
g_signal_connect ( okno, "destroy", G_CALLBACK (gtk_main_quit), NULL );
kontener_vbox = gtk_vbox_new ( FALSE, 0);
gtk_container_add( GTK_CONTAINER( okno ), kontener_vbox );
pasek_menu = gtk_menu_bar_new();
plik_menu = gtk_menu_new();
plik = gtk_menu_item_new_with_label("Plik");
wyjscie = gtk_menu_item_new_with_label("Wyjście");
gtk_menu_item_set_submenu(GTK_MENU_ITEM(plik), plik_menu);
gtk_menu_shell_append(GTK_MENU_SHELL(plik_menu), wyjscie);
gtk_menu_shell_append(GTK_MENU_SHELL(pasek_menu), plik);
gtk_box_pack_start(GTK_BOX(kontener_vbox), pasek_menu, FALSE, FALSE, 3);
g_signal_connect( wyjscie, "activate", G_CALLBACK(gtk_main_quit), NULL);
/* Tworzy przewijane okno */
przesuwne_okno = gtk_scrolled_window_new ( NULL, NULL );
gtk_box_pack_start( GTK_BOX(kontener_vbox), przesuwne_okno, TRUE, TRUE, 0 );
tabela = gtk_table_new ( WIERSZE, KOLUMNY, FALSE );
for ( i = 0; i < WIERSZE; i++ )
{
for ( j = 0; j < KOLUMNY ; j++ )
{
etykieta = gtk_label_new ( "Wprowadź" );
gtk_table_attach_defaults( GTK_TABLE(tabela), etykieta, j, j+1, i, i+1 );
j++;
pole_tekstowe = gtk_entry_new ();
gtk_table_attach_defaults( GTK_TABLE(tabela), pole_tekstowe, j, j+1, i, i+1 );
}
}
/* Dodaje tabele do przewijanego okna */
gtk_scrolled_window_add_with_viewport ( GTK_SCROLLED_WINDOW(przesuwne_okno), tabela );
gtk_widget_show_all ( okno );
gtk_main ();
return 0;
}
Nie wiem czy wiesz, ale jest klikany edytor GUI dla Gtk+, zwie się Glade. Nie warto męczyć się całe GUI pisać w kodzie !
Tu masz małe how-to http://cpp0x.pl/kursy/Kurs-Glade-GTK+/452