|
Handle Box这容器跟上一篇博文中所介绍到Exapnder一样,,只允许有一个子控件在上面。Handle Box是一个可以拿下来到控件,可以浮动到控件。咦,这功能好熟悉哦,呵呵,你想得不错,在windows中,窗口的工具栏里面的元素是可以用鼠标拖动的。转入正题,Handle Box控件能用来制作一些浮动菜单。下面是一简单实例:
/**********************************
**
**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看字意就能明白它是用来做笔记本,故称为笔记本控件,是是互相重叠的页面集合,每一页都包含不同的信息,且一次只有一个页面是可见的。在GUI中,如果要显示比较大的相似信息量时,使用这控件是一个很好的方法。下面是一简单实例,例子后面简单介绍下这个控件所涉及到的函数。
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. 创建一个新的笔记本控件函数:
GtkWidget *gtk_notebook_new( void );以上函数返回一个新的Notebook的句柄。创建完后,我们要给Notebook添加页标签,
2. 创建页标签函数:
int gtk_notebook_append_page (GtkNotebook *notebook,
GtkWidget *child,
GtkWidget *tab_label);*notebook为要添加页标签的Notebook的句柄,child是放在笔记本页面里的子构件,tab_label是要添加的页面的标签,child跟table_label需要另外创建,当然child跟table_label可以为其它容器。
3. 设置页标签的位置[有右,左,上,下]
void gtk_notebook_set_tab_pos (GtkNotebook *notebook,
GtkPositionType pos);pos是一个枚举型参数,有 GTK_POS_LEFT,GTK_POS_RIGHT,GTK_POS_TOP ,GTK_POS_BOTTOM。其中GTK_POS_TOP是缺省值。
|
|