码迷,mamicode.com
首页 > 其他好文 > 详细

GTK常用控件之笔记本控件( GtkNotebook )

时间:2015-07-30 11:32:15      阅读:384      评论:0      收藏:0      [点我收藏+]

标签:gtk

笔记本控件,可以让用户标签式地切换多个界面。当我们需要多窗口切换时,使用笔记本控件是一个明智的选择。

技术分享


笔记本控件的创建:

GtkWidget *gtk_notebook_new(void);

返回值:笔记本控件指针


设置页标签的位置:

void gtk_notebook_set_tab_pos( GtkNotebook *notebook, 

GtkPositionType pos );

notebook:笔记本控件

pos取值如下:

GTK_POS_LEFT:   左
GTK_POS_RIGHT:  右
GTK_POS_TOP:    上
GTK_POS_BOTTOM: 下


追加页面:
gint gtk_notebook_append_page(

GtkNotebook *notebook, 
GtkWidget *child, 
GtkWidget *tab_label );

notebook: 容纳别的控件的笔记本
child:       放在笔记本页面里的子控件
tab_label:要添加页面的标题名
返回值:成功返回值页面值(从0开始),失败返回-1

在指定位置添加页面(从0开始):
gint gtk_notebook_insert_page(
GtkNotebook *notebook,
GtkWidget *child, 
GtkWidget *tab_label,
gint position );

notebook: 容纳别的控件的笔记本
child:       放在笔记本页面里的子控件
tab_label:要添加页面的标题名
position:页面的位置,从0开始,如果-1代表添加到最后
返回值:成功返回值页面值(从0开始),失败返回-1

设置起始页,从0开始算,相当于设置第几个页面显示:
void gtk_notebook_set_current_page(
GtkNotebook *notebook, 
gint page_num );

notebook:要设置的笔记本控件
page_num:页面数

常用信号:"switch-page"
当切换页面时,会触发"switch-page"信号

例子代码如下:
#include <gtk/gtk.h>


void deal_switch_page(GtkNotebook *notebook, gpointer page, guint page_num, gpointer data)
{
        printf("我是第%d个页面\n", page_num+1);
        return;
}

int main(int argc, char *argv[])
{
        //1.gtk环境
        gtk_init(&argc, &argv);

        //2.创建一个window
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        //设置窗口大小
        gtk_widget_set_size_request(window, 400, 300);

        //3.创建笔记本控件
        GtkWidget *notebook = gtk_notebook_new();
        gtk_container_add(GTK_CONTAINER(window), notebook);

        //4.页标签的位置,可以有四种位置:上、下、左或右
        gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);//上面

        //5.创建一个水平布局
        GtkWidget *hbox = gtk_hbox_new(TRUE, 5);
        gtk_container_add(GTK_CONTAINER(window), hbox);
         
        
        //6.第一个页面
        GtkWidget *label = gtk_label_new("Page one");

        GtkWidget *button1 = gtk_button_new_with_label("我是第一个页面");
        gtk_container_add(GTK_CONTAINER(hbox), button1);

        GtkWidget *button2 = gtk_button_new_with_label("我是第一个页面的按钮");
        gtk_container_add(GTK_CONTAINER(hbox), button2);

        gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label);

        //7.第二个页面
        label = gtk_label_new("Page two");
        hbox = gtk_hbox_new(TRUE, 5);
        button1 = gtk_button_new_with_label("我是第二个页面");
        gtk_container_add(GTK_CONTAINER(hbox), button1);

         button2 = gtk_button_new_with_label("我是第二个页面的按钮");
         gtk_container_add(GTK_CONTAINER(hbox), button2);

         gtk_notebook_append_page(GTK_NOTEBOOK(notebook), hbox, label);

         //8.第三个页面,在指定位置添加页面,从0开始
         label = gtk_label_new("page three");
         button1 = gtk_button_new_with_label("我是通过insert_page实现的,第三页面");
         gtk_notebook_insert_page(GTK_NOTEBOOK(notebook), button1, label, 2);

         //9.处理信号,当切换页面的时候,会触发“switch-page”信号
         g_signal_connect(notebook, "switch-page", G_CALLBACK(deal_switch_page), NULL);

         //10.设置默认起始页为第二页,从0开始算,那就是1
         gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),1);

         //11.显示所有网页
         gtk_widget_show_all(window);

         //12.主事件循环
         gtk_main();

        return 0;
}

运行结果:
技术分享


版权声明:本文为博主原创文章,未经博主允许不得转载。

GTK常用控件之笔记本控件( GtkNotebook )

标签:gtk

原文地址:http://blog.csdn.net/lianghe_work/article/details/47144277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!