GtkNotebook控件可以实现多标签切换窗口

在标签切换时会触发"switch-page"信号,对应的回调函数
void user_function (GtkNotebook *notebook,
GtkNotebookPage *page,
guint page_num,
gpointer user_data);
Emitted when the user or a function changes the current page.
notebook :
the object which received the signal.
page :
the new current page
page_num :
the index of the page
user_data :
user data set when the signal handler was connected.
测试代码
#include <gtk/gtk.h>
//页面切换回调函数
void on_switch_page(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, gpointer user_data){
//显示页面序号
g_print("switched to page %d\n",page_num);
}
int main(int argc,char* argv[]){
//gtk初始化函数
gtk_init(&argc,&argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//窗体大小设置
gtk_window_set_default_size(GTK_WINDOW(window),400,300);
//新建notebook控件
GtkWidget *noteBook = gtk_notebook_new();
gtk_container_add(GTK_CONTAINER(window),noteBook);
gtk_notebook_set_tab_pos(GTK_NOTEBOOK(noteBook),GTK_POS_RIGHT);
//第0页
GtkWidget *frame0 = gtk_frame_new("this is page 0");
GtkWidget *label = gtk_label_new("Page0");
//添加页面
gtk_notebook_append_page(GTK_NOTEBOOK(noteBook),frame0,label);
//第1页
GtkWidget *frame1 = gtk_frame_new("this is page 1");
label = gtk_label_new("Page1");
//添加页面
gtk_notebook_append_page(GTK_NOTEBOOK(noteBook),frame1,label);
//设置当前页为第0页
gtk_notebook_set_current_page(GTK_NOTEBOOK(noteBook),0);
//连接信号回调函数
g_signal_connect(G_OBJECT(noteBook),"switch-page",G_CALLBACK(on_switch_page),NULL);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//显示窗口
gtk_widget_show_all(window);
//gtk主函数
gtk_main();
return 0;
}
效果
