框架(Frames)可以用于在盒子中封装一个或一组构件,框架本�还可以有一个标签。标签的位置和盒子的风格可以灵活改变。
框架可以用下面的函数创建:
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_init (&argc, &argv); /* 创建一个新窗口 */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Frame Example"); /* 在这里我们将 "destroy" 事件连接到一个回调函数 */ 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; } |