首頁 / LinuxDev / GTK+ 2.0 教學-框架 Frames

GTK+ 2.0 教學-框架 Frames

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

框架可以用下面的函式創建:

GtkWidget *_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 );

xalignyalign參數取值範圍介於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;
}
馬上成為工作達人的Fans

About ㄚ琪

工作達人Fun Taiwan的創辦者及總編,可以在這裡更認識他。

2 comments

發表迴響

你的電子郵件位址並不會被公開。 Required fields are marked *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Scroll To Top