框架(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; } |
2 則留言