Satu lagi cara menempatkan widget ke dalam kontainer yaitu dengan tabel. Pertama kita fungsi gtk_table_new() :
GtkWidget *gtk_table_new( guint rows,
guint columns,
gboolean homogeneous );
Argumen pertama adalah jumlah baris, dan argumen kedua adalah jumlah kolom. Sedangkan argumen ketiga berhubungan dengan ukuran kotak dalam tabel. Jika TRUE ukuran kotak tabel mengikuti ukuran child yang paling besar, jika FALSE ukuran kotak tabel mengikuti child yang paling tinggi dalam baris yang sama dan child yang paling lebar dalam kolom yang sama.
Untuk penempatan child dalam tabel digunakan sistem koordinat dengan sumbu x dari 0 sampai jumlah kolom dan sumbu y dari 0 sampai jumlah baris.
Jika jumlah barisnya 2 dan jumlah kolomnya 2 maka tabelnya akan seperti :
0 1 2
0+----------+----------+
| | |
1+----------+----------+
| | |
2+----------+----------+
Contoh program, tablepack.c, berikut akan banyak menjelaskan pemakaian tabel untuk menempatkan widget.
#include <gtk/gtk.h> |
Fungsi yang digunakan untuk meletakkan widget ke dalam tabel adalah :
void gtk_table_attach( GtkTable *table,
GtkWidget *child,
guint left_attach,
guint right_attach,
guint top_attach,
guint bottom_attach,
GtkAttachOptions xoptions,
GtkAttachOptions yoptions,
guint xpadding,
guint ypadding );
tabel adalah pointer ke tabel kontainer, child adalah widget yang akan ditempatkan ke tabel, left_attach/right_attach adalah ujung kiri dan kanan pada sumbu x, top_attach/bottom_attach adalah ujung atas dan bawah pada sumbu y.
yoptions/xoptions adalah pilihan jika terjadi perubahan ukuran tabel atau kontainernya. Pilihan itu terdiri dari :
GTK_FILL
Jika box tabel lebih lebar dari child widget maka widget akan membesar mengikuti ukuran box.
GTK_SHRINK
Jika ukuran tabel lebih kecil dari widget, widget akan ikut mengecil.
GTK_EXPAND
Tabel akan mengisi semua ruang dalam window atau kontainer.
xpadding/ypadding, berapa ruang yang akan digunakan disekitar widget, dalam satuan pixel.
Karena gtk_table_attach() mempunyai argumen yang banyak maka ada fungsi lain yang lebih ringkas yaitu :
void gtk_table_attach_defaults( GtkTable *table,
GtkWidget *widget,
guint left_attach,
guint right_attach,
guint top_attach,
guint bottom_attach );
dengan nilai default option x dan y adalah GTK_FILL | GTK_EXPAND dan padding x dan y bernilai 0.
Terdapat fungsi lain yaitu :
void gtk_table_set_row_spacing( GtkTable *table,
guint row,
guint spacing );
dan
void gtk_table_set_col_spacing ( GtkTable *table,
guint column,
guint spacing );
Fungsi-fungsi ini akan mengatur ruang diantara kolom dan baris. Untuk kolom tambahan ruang di sebelah kanan. Untuk baris tambahan ruang di bawah. Kecuali untuk kolom paling kanan atau baris paling kiri, tidak akan ada tambahan ruang.
Untuk mengatur ruang di semua kolom dan baris dapat menggunakan fungsi :
void gtk_table_set_row_spacings( GtkTable *table,
guint spacing );
dan
void gtk_table_set_col_spacings( GtkTable *table,
guint spacing );
Pada umumnya widget untuk penempatan yang digunakan adalah box dan tabel. Selain itu juga terdapat kontainer lain yang digunakan dalam situasi khusus :
GtkHButtonBox -- kontainer untuk mengatur tombol (button) secara horisontal
GtkVButtonBox -- kontainer untuk mengatur tombol (button) secara vertikal
GtkFixed -- kontainer dimana child widget akan ditempatkan secara tetap pada koordinatnya
GtkHPaned -- kontainer yang membelah dua permukaannya secara horisontal
GtkVPaned -- kontainer yang membelah dua permukaannya secara vertikal
GtkLayout -- area yang dapat digulung atau area yang dapat di gambar
GtkNotebook -- kontainer dengan tab
|