1. 程式人生 > >GTK+圖形化應用程式開發學習筆記(十七)—框架構件、比例框架構件

GTK+圖形化應用程式開發學習筆記(十七)—框架構件、比例框架構件

一、框架構件

框架構件(GtkFrame)可以用於在盒子中封裝一個或一組構件,框架本身還可以有一個標籤。標籤的位置和風格可以靈活改變。

我們用gtk_frame_set_label函式建立框架構件。

名稱:

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    目前還沒有使用

返回值:

 xalignyalign引數取值範圍介於0.01.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   

返回值:

新的比例框架構件

xalignyalign引數取值範圍介於0.01.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   

返回值: