GTK+ 2.0 Tutorial |
||
---|---|---|
Container Widgets |
Рамки могут использоваться для ограничения одного или группы виджетов с установкой произвольно маркированного поля. Позиция и стиль поля маркировки может изменяться.
Рамка создаётся так:
GtkWidget *gtk_frame_new( const gchar *label );
|
Поле маркировки по умолчанию располагается вверху слева. Значение NULL в качестве аргумента label, отключает отображение маркировки. Текст маркировки может быть изменён с помощью следующей функции.
void gtk_frame_set_label( GtkFrame *frame,
const gchar *label );
|
Позиция поля маркировки изменяется так:
void gtk_frame_set_label_align( GtkFrame *frame,
gfloat xalign,
gfloat yalign );
|
xalign и yalign могут иметь значения между 0.0 и 1.0. Аргумент xalign указывает позицию по горизонтали на вершине рамки. yalign в настоящее время не используется. Значение по умолчанию xalign - 0.0, это помещает метку в левом конце рамки.
Следующая функция изменяет стиль поля, которое используется, чтобы выделить рамку.
void gtk_frame_set_shadow_type( GtkFrame *frame,
GtkShadowType type);
|
Аргумент type может принимать одно из следующих значений:
GTK_SHADOW_NONE
GTK_SHADOW_IN
GTK_SHADOW_OUT
GTK_SHADOW_ETCHED_IN (по умолчанию)
GTK_SHADOW_ETCHED_OUT
|
Следующий пример кода демонстрирует использование рамки.
#include <gtk/gtk.h>
int main( int argc,
char *argv[] )
{
/* GtkWidget содержит типы виджетов */
GtkWidget *window;
GtkWidget *frame;
/* Инициализируем GTK */
gtk_init (&argc, &argv);
/* Создаём новое окно */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Frame Example");
g_signal_connect (G_OBJECT (window), "destroy",
G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_set_size_request (window, 300, 300);
/* Устанавливаем окантовку окна. */
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
/* Создаём рамку */
frame = gtk_frame_new (NULL);
gtk_container_add (GTK_CONTAINER (window), frame);
/* Устанавливаем маркировку рамки */
gtk_frame_set_label (GTK_FRAME (frame), "GTK Frame Widget");
/* Выравниваем маркировку справа */
gtk_frame_set_label_align (GTK_FRAME (frame), 1.0, 0.0);
/* Устанавливаем стиль рамки */
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT);
gtk_widget_show (frame);
/* Отображаем окно */
gtk_widget_show (window);
/* Входим в цикл */
gtk_main ();
return 0;
}
|
Layout Container |
Aspect Frames |