找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3528|回复: 0
打印 上一主题 下一主题
收起左侧

GTK窗口布局管理-Handle Box和Notebook[原]

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 19:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       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是缺省值。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表