G0398 发表于 2014-10-28 21:50:28

C语言GUI程序设计-GTK图文系列-GtkWidget之容器(四)

这一讲讲解GtkNotebook、GtkTable和GtkExpander部件

GtkNotebook

GtkNotebook就是大名鼎鼎的选项卡部件,在很多场合都能看到它的身影,例如:多选项卡浏览器,Windows任务管理器等。




#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
    GtkWidget *window,*notebook,*label_title_1,*label_title_2,*label_title_3;
    GtkWidget *button_content_1,*button_content_2,*button_content_3;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"hello fishc - GtkNotebook");
    gtk_widget_set_size_request(window,300,200);

    notebook = gtk_notebook_new();
    gtk_container_add(GTK_CONTAINER(window), notebook);

    label_title_1 = gtk_label_new("title 1");
    label_title_2 = gtk_label_new("title 2");
    label_title_3 = gtk_label_new("title 3");

    button_content_1 = gtk_button_new_with_label("content 1");
    button_content_2 = gtk_button_new_with_label("content 2");
    button_content_3 = gtk_button_new_with_label("content 3");

    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),button_content_1,label_title_1);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),button_content_2,label_title_2);
    gtk_notebook_append_page(GTK_NOTEBOOK(notebook),button_content_3,label_title_3);

    gtk_widget_show_all(window);
    gtk_main ();

    return 0;
}

这个部件使用简单,就是一个gtk_notebook_append_page函数用来添加子部件和选项卡头文本。
第二个参数为子部件,第三个参数为头文本,如果第三个参数设置为NULL,则头文本以第N页方式递增,如:第 1 页,第 2 页.......

GtkTable

GtkTable和前面讲过的GtkGrid是一样的东西,文档里注明:在GTK3.4版本后不提倡使用gtk_table_new函数,建议使用gtk_grid_new函数来创建表格。

GtkExpander

GtkExpander是一个可伸缩的小部件,类似与QQ中的好友分组,点击可以切换展开/收缩状态。

下图是点击展开后的效果:




例程:
#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
    GtkWidget *window,*expander,*label_content;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"hello fishc - GtkExpander");
    gtk_widget_set_size_request(window,300,200);

    expander = gtk_expander_new("Click to view detail");
    gtk_container_add(GTK_CONTAINER(window), expander);

    label_content = gtk_label_new("something detail.");
    gtk_container_add(GTK_CONTAINER(expander), label_content);

    gtk_widget_show_all(window);
    gtk_main ();

    return 0;
}



拈花小仙 发表于 2014-10-28 22:01:52

建个淘帖,自己把帖淘起来吧

大黑鱼 发表于 2014-10-28 22:09:31

强烈支持楼主{:5_109:}

565266718 发表于 2014-10-29 09:38:37

支持楼主。。。

G0398 发表于 2014-10-29 19:10:59

拈花小仙 发表于 2014-10-28 22:01
建个淘帖,自己把帖淘起来吧

等这个系列写完了我会整理个目录贴出来给大家当作字典来用要用到哪个Widget来查就行了{:5_109:}
页: [1]
查看完整版本: C语言GUI程序设计-GTK图文系列-GtkWidget之容器(四)