}int main(int argc, char* argv[]) {Β GtkWidget *window;Β GtkWidget *button;Β gtk_init(&argc, &argv);Β window = gtk_window_new(GTK_WINDOW_TOPLEVEL);Β button = gtk_button_new_with_label("Hello World!");Β gtk_container_add(GTK_CONTAINER(window), button);Β g_signal_connect(GTK_OBJECT(button), "clicked",Β GTK_SIGNAL_FUNC(button_clicked), "Button 1");Β gtk_widget_show(button);Β gtk_widget_show(window);Β gtk_main();Β return 0;}ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ gtk2.c. ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ gtk1.Ρ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ. ΠΠ°ΠΏΡΡΡΠΈΠ² Π΅Π΅, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΎΠΊΠ½ΠΎ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅Π»ΡΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡΡΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΡΠΈΡ. 16.5).

Π ΠΈΡ. 16.5
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΄Π²Π° Π½ΠΎΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ gtk2.c: Π²ΠΈΠ΄ΠΆΠ΅Ρ
GtkButtonGtkButtonclickedΠ€ΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°
button_clickedclickedg_signal_connectg_signal_connect(GTK_OBJECT(app), "clicked",Β GTK_SIGNAL_FUNC(button_clicked), "Button 1");ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΠΌΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ β "Button 1" β ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ΅ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠΊΠ½ΠΎ β Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ
gtk_button_new_with_labelgtk_widget_showΠΠ»Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ΠΎΠΊΠ½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ
gtk_container_addGtkWidgetGtkContainervoid gtk_container_add(GtkContainer* container, GtkWidget *widget);ΠΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π·Π½Π°Π΅ΡΠ΅,
GtkWindowGtkContainerGtkContainerGTK_CONTAINERgtk_container_add(GTK_CONTAINER(window), button);Π€ΡΠ½ΠΊΡΠΈΡ
gtk_container_addΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²
ΠΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ° GUI ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΡΡΠ΄Π½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ. Π Π΅Π°Π»ΡΠ½Π°Ρ ΡΡΡΠ΄Π½ΠΎΡΡΡ Π² ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΎΠΊΠΎΠ½, ΡΠ΅ΠΌ, ΡΡΠΈΡΡΠΎΠ² ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ Π΅ΠΌ. Π’ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠΌ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ GUI, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ. Π£ GTK+ Π΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΈΠ΄ΠΆΠ΅ΡΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΠΎΠΊΠ½Π°Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (box) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΈΠΏ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. GTK+ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ GTK+.
ΠΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² β Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΡΠΎΡΡΡ β Ρ ΡΠ°Π½ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΡΡ Π΅ΠΌΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π²Ρ Π·Π°Π΄Π°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
GtkWidgetGtkBoxGtkWidgetΠ£ ΡΠΈΠΏΠ°
GtkBoxβ‘Β
GtkHBoxβ‘Β
GtkVBoxΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
homogeneousspacing<b>GtkWidget* gtk_hbox_new(gboolean homogeneous, gint spacing);</b><b>GtkWidget* gtk_vbox_new(gboolean homogeneous, gint spacing);</b>ΠΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΎΠΉ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ
homogeneousTRUEspacingΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠΎΠ·Π΄Π°Π½, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² Π½Π΅Π³ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
gtk_box_pack_startgtk_box_pack_end<b>void gtk_box_pack_start(GtkBox *box, GtkWidget *child,</b><b>Β gboolean expand, gboolean f ill, guint padding);</b><b>void gtk_box_pack_end(GtkBox *box, GtkWidget *child,</b><b>Β gboolean expand, gboolean fill, guint padding);</b>Π€ΡΠ½ΠΊΡΠΈΡ
gtk_box_pack_startGtkHBoxGtkVBoxgtk_box_pack_end