GTK+圖形化應用程式開發學習筆記(十七)—框架構件、比例框架構件
一、框架構件
框架構件(GtkFrame)可以用於在盒子中封裝一個或一組構件,框架本身還可以有一個標籤。標籤的位置和風格可以靈活改變。
我們用gtk_frame_set_label函式建立框架構件。
1.
名稱:: |
gtk_frame_new |
功能: |
建立框架構件 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
GtkWidget *gtk_frame_new( const gchar *label ); |
引數: |
label 框架構件的標籤 |
返回值: |
新的框架構件 |
label為框架構件的標籤。預設設定時,標籤放在框架的左上角。傳遞NULL
下面是建立框架的程式例子:
#include <gtk/gtk.h> int main(int argc,char *argv[ ]) { GtkWidget *window; GtkWidget *frame; GtkWidget *button; GtkWidget *box; GSList *group=NULL;/*定義組*/ gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_size_request(window,100,80); gtk_signal_connect(GTK_BOX(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); grame=gtk_frame_new(“性別”); /*建立框架構件*/ gtk_container_add(GTK_CONTAINER(window),frame);/*將框架構件加入窗體*/ gtk_widget_show(frame); box=gtk_vbox_new(FALSE,0);/*建立組裝框*/ gtk_container_add(GTK_CONTAINER(frame),box);/*將組裝框加入框架構件*/ gtk_widget_show(box); button=gtk_radio_button_new_with_label(group,”男”);/*建立按鈕*/ group=gtk_radio_button_group(GTK_RADIO_BUTTON(button));/*將按鈕加入組裝框*/ gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,5); gtk_widget_show(button); button=gtk_radio_button_new_with_label(group,”女”); group=gtk_radio_button_group(GTK_RADIO_BUTTON(button)); gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,5); gtk_widget_show(button); gtk_widget_show(window); gtk_main(); } |
程式執行後得到如下介面:
標籤文字可以用gtk_frame_set_label函式改變。
2.
名稱:: |
gtk_frame_set_label |
功能: |
修改框架構件的標籤 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
void gtk_frame_set_label( GtkFrame *frame,const gchar *label ); |
引數: |
frame 框架構件 label 標籤 |
返回值: |
無 |
標籤的位置可以用gtk_frame_set_label_align
3.
名稱:: |
gtk_frame_set_label_align |
功能: |
修改框架構件標籤的位置 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
void gtk_frame_set_label_align( GtkFrame *frame,gfloat xalign,gfloat yalign ); |
引數: |
frame 框架構件 xalign 標籤在框架構件上部水平線上的位置 yalign 目前還沒有使用 |
返回值: |
無 |
xalign和yalign引數取值範圍介於0.0和1.0之間。xalign指定標籤在框架構件上部水平線上的位置。yalign引數目前還沒有使用。xalign的預設值是0.0,它將標籤放在框架構件的左上角處。
gtk_frame_set_label_align函式可以改變框架的輪廓框風格。
4.
名稱:: |
gtk_frame_set_shadow_type |
功能: |
修改框架構件的輪廓框風格 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
void gtk_frame_set_shadow_type( GtkFrame *frame,GtkShadowType type); |
引數: |
frame 框架構件 type 框架的輪廓框風格 |
返回值: |
無 |
Type引數可以取以下值:
GTK_SHADOW_NONE
GTK_SHADOW_IN
GTK_SHADOW_OUT
GTK_SHADOW_ETCHED_IN (預設值)
GTK_SHADOW_ETCHED_OUT
二、比例框架構件
比例框架構件(GtkAspectFrame) 和框架構件差不多,差別在於它會保持子構件的長寬比例,如果需要,還會在構件中增加額外的可用空間。
建立比例構件用函式gtk_aspect_frame_new。
5
名稱:: |
gtk_aspect_frame_new |
功能: |
建立比例框架構件 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
GtkWidget *gtk_aspect_frame_new( const gchar *label,gfloat xalign,gfloat yalign,gfloat ratio,gint obey_child); |
引數: |
label 框架構件的標籤 xalign 子構件在比例框架中的橫向位置 yalign 子構件在比例框架中的縱向位置 ratio 比例框架的長寬比例 obey_child |
返回值: |
新的比例框架構件 |
xalign和yalign引數取值範圍介於0.0和1.0之間。xalign指定標籤在框架構件上部水平線上的位置。0.0為左對齊,1.0為右對齊。yalign指定標籤在框架構件上部垂直線上的位置。
ratio為比例框架的長寬比例。
如果o b e y _ c h i l d引數設定為T R U E,子構件的長寬比例會和它所請求的理想長寬比例相匹配。否則,比例值由r a t i o引數指定。
我們將上面的程式例子中的:
grame=gtk_frame_new(“性別”); /*建立框架構件*/
換為:
grame= gtk_aspect_frame_new (“性別”,0.1,0.1,3,FALSE); /*建立比例框架構件*/
編譯後得到如下構件:
6、
名稱:: |
gtk_frame_new |
功能: |
修改比例框架構件選項 |
標頭檔案: |
#include <gtk/gtk.h> |
函式原形: |
void gtk_aspect_frame_set( GtkAspectFrame *aspect_frame,gfloat xalign, gfloat yalign,gfloat ratio,gint obey_child); |
引數: |
aspect_frame 比例構件 xalign 子構件在比例框架中的橫向位置 yalign 子構件在比例框架中的縱向位置 ratio 比例框架的長寬比例 obey_child |
返回值: |
無 |