GTK+ 2.0 Tutorial |
||
---|---|---|
Упаковочные ввиджеты (Packing Widgets) |
Создаём окно с тремя кнопками в таблице 2x2. Первые две кнопки будут помещены в верхний ряд. А третья, кнопка выхода, будет помещена в нижний ряд заняв оба столбца. Выглядеть это будет примерно так:
#include <gtk/gtk.h>
/* Обратный вызов.
* Данные направленные в эту функцию будут выведены на stdout */
void callback( GtkWidget *widget,
gpointer data )
{
g_print ("Hello again - %s was pressed\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");
/* Определяем обработчик сигналов для delete_event, чтобы выходить из GTK */
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (delete_event), NULL);
/* Устанавливаем окантовку окна. */
gtk_container_set_border_width (GTK_CONTAINER (window), 20);
/* Создаём таблицу 2x2 */
table = gtk_table_new (2, 2, TRUE);
/* Вставляем таблицу в главное окно */
gtk_container_add (GTK_CONTAINER (window), table);
/* Создаём первую кнопку */
button = gtk_button_new_with_label ("button 1");
/* Когда нажимается кнопка, происходит вызов функции
* с указателем на кнопку "button 1" в качестве аргумента */
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (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");
/* Когда нажимается кнопка, происходит вызов функции
* с указателем на кнопку "button 2" в качестве аргумента */
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (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");
/* При нажатии на кнопку происходит вызов функции delete_event и выход из программы */
g_signal_connect (G_OBJECT (button), "clicked",
G_CALLBACK (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;
}
|
Packing Using Tables |
Widget Overview |