標(biāo)題: GTK窗口布局管理-Handle Box和Notebook[原] [打印本頁]

作者: liuda    時(shí)間: 2015-1-23 19:57
標(biāo)題: GTK窗口布局管理-Handle Box和Notebook[原]
       Handle Box這容器跟上一篇博文中所介紹到Exapnder一樣,,只允許有一個(gè)子控件在上面。Handle Box是一個(gè)可以拿下來到控件,可以浮動(dòng)到控件。咦,這功能好熟悉哦,呵呵,你想得不錯(cuò),在windows中,窗口的工具欄里面的元素是可以用鼠標(biāo)拖動(dòng)的。轉(zhuǎn)入正題,Handle Box控件能用來制作一些浮動(dòng)菜單。下面是一簡單實(shí)例:
/**********************************
**
**FILE:         handleboxgtk+.c
**DATE:         20090612 17:38
**AUTHOR:       LAMMY
**VERSION:      0.0
**
**********************************/
#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
        GtkWidget *pHwindow, *pHhandlebox, *pHlabel;
        
        gtk_init(&argc, &argv);
        pHwindow  = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title(GTK_WINDOW(pHwindow), "handleboxgtk+");
        gtk_widget_set_size_request(pHwindow, 200, 150);
        gtk_container_set_border_width(GTK_CONTAINER(pHwindow), 10);
        
        pHhandlebox = gtk_handle_box_new();
        pHlabel = gtk_label_new("Label!");
        
        gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(pHhandlebox), GTK_SHADOW_ETCHED_OUT);
        gtk_handle_box_set_handle_position(GTK_HANDLE_BOX(pHhandlebox), GTK_POS_BOTTOM);
        gtk_handle_box_set_snap_edge(GTK_HANDLE_BOX(pHhandlebox), GTK_POS_RIGHT);
        
        gtk_container_add(GTK_CONTAINER(pHhandlebox), pHlabel);
        gtk_container_add(GTK_CONTAINER(pHwindow), pHhandlebox);
        
        gtk_widget_show_all(pHwindow);
        gtk_main();
        
        return 0;
}Notebook看字意就能明白它是用來做筆記本,故稱為筆記本控件,是是互相重疊的頁面集合,每一頁都包含不同的信息,且一次只有一個(gè)頁面是可見的。在GUI中,如果要顯示比較大的相似信息量時(shí),使用這控件是一個(gè)很好的方法。下面是一簡單實(shí)例,例子后面簡單介紹下這個(gè)控件所涉及到的函數(shù)。
1 /**********************************
  2 **
  3 **FILE:         handleboxgtk+.c
  4 **DATE:         20090615 24:38
  5 **AUTHOR:       LAMMY
  6 **VERSION:      0.0
  7 **
  8 **********************************/
  9 #include <gtk/gtk.h>
10 #include <glib/gprintf.h>//c lib fuc
11
12 #if 0
13 gboolean _CallBack_ChangeTab(GtkWidget *pHwidget, GtkNotebook *pHnotebook)
14 {
15         gtk_notebook_next_page(pHnotebook);
16         
17         return 0;
18 }
19 #endif
20
21 int main(int argc, char *argv[])
22 {
23         GtkWidget *pHwindow, *pHlable[3], *pHchild[3], *pHnotebook;
24         guint32 temp = 0;
25         gchar chBufer[20];
26
27         gtk_init(&argc, &argv);
28
29         pHwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
30         gtk_window_set_title(GTK_WINDOW(pHwindow), "notebooksgtk+");
31         gtk_widget_set_size_request(pHwindow, 250,200);
32         gtk_container_set_border_width(GTK_CONTAINER(pHwindow), 10);
33
34         pHnotebook = gtk_notebook_new();
35
36         for(temp = 0; temp < 3; temp++)
37         {
38                 g_sprintf(chBufer, "%s%d","label",temp);
39                 pHlable[temp] = gtk_label_new(chBufer);
40                 pHchild[temp] = gtk_label_new(chBufer);
41 //              g_signal_connect(G_OBJECT(pHchild[temp]), "clicked", G_CALLBACK(_CallBack_ChangeTab), pHnotebook);
42                 gtk_notebook_append_page(GTK_NOTEBOOK(pHnotebook), pHchild[temp], pHlable[temp]);
43         }
44
45         gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pHnotebook), GTK_POS_BOTTOM);
46         gtk_container_add(GTK_CONTAINER(pHwindow), pHnotebook);
47
48         gtk_widget_show_all(pHwindow);
49         gtk_main();
50
51         return 0;
52 }
1. 創(chuàng)建一個(gè)新的筆記本控件函數(shù):
GtkWidget *gtk_notebook_new( void );以上函數(shù)返回一個(gè)新的Notebook的句柄。創(chuàng)建完后,我們要給Notebook添加頁標(biāo)簽,
2. 創(chuàng)建頁標(biāo)簽函數(shù):
int                gtk_notebook_append_page            (GtkNotebook *notebook,
                                                         GtkWidget *child,
                                                         GtkWidget *tab_label);*notebook為要添加頁標(biāo)簽的Notebook的句柄,child是放在筆記本頁面里的子構(gòu)件,tab_label是要添加的頁面的標(biāo)簽,child跟table_label需要另外創(chuàng)建,當(dāng)然child跟table_label可以為其它容器。
3. 設(shè)置頁標(biāo)簽的位置[有右,左,上,下]
void                gtk_notebook_set_tab_pos            (GtkNotebook *notebook,
                                                         GtkPositionType pos);pos是一個(gè)枚舉型參數(shù),有 GTK_POS_LEFT,GTK_POS_RIGHT,GTK_POS_TOP ,GTK_POS_BOTTOM。其中GTK_POS_TOP是缺省值。





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1