Табличка будет такая:
0+----1----2 |----|----| 1+----+----+
Постейший вариант. Две кнопки мы поставим в два верхних квадрата, а третью растянем на два нижних квадрата. Вот код:
#include <gtk/gtk.h> // Обработчик события нажатия на кнопки void callback (GtkWidget * widget, gpointer data) { g_print ("Усем здрасть - нажата кнопка %s\n", (char *) data); } // Как это принято, обработчик, завершающий программу gint delete_event (GtkWidget * widget, GdkEvent * event, gpointer data) { gtk_main_quit (); return (FALSE); } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; GtkWidget *table; gtk_init (&argc, &argv); /* Новое окно */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* Наводим красоту */ gtk_window_set_title (GTK_WINDOW (window), "Table"); /* Ну, а это лучше никогда не забывать */ gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (delete_event), NULL); /* Опять-таки чтобы было покрасивше */ gtk_container_set_border_width (GTK_CONTAINER (window), 20); /* Табличку состряпаем */ table = gtk_table_new (2, 2, TRUE); /* Без этого табличку мы не увидим */ gtk_container_add (GTK_CONTAINER (window), table); /* Первую кнопочку */ button = gtk_button_new_with_label ("button 1"); /* * Маленькое ухищрение... Чтоб не придумывать * для каждой кнопочки свой обработчик, вставим название * кнопочки в вызов обработчика */ gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (callback), (gpointer) "button 1"); /* Всунем кнопочку в таблицу */ gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 1, 0, 1); gtk_widget_show (button); /* То же самое для второй кнопки */ button = gtk_button_new_with_label ("button 2"); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (callback), (gpointer) "button 2"); gtk_table_attach_defaults (GTK_TABLE (table), button, 1, 2, 0, 1); gtk_widget_show (button); /* Теперь кнопку "Quit" */ button = gtk_button_new_with_label ("Quit"); /* По нажатию кнопки завершаем программу. */ gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (delete_event), NULL); /* Вставим кнопку в два нижних квадрата */ gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 2, 1, 2); gtk_widget_show (button); gtk_widget_show (table); gtk_widget_show (window); gtk_main (); return 0; }
Вот так. Смотрите, разбирайтесь...