GTK 笔记本构件(The NoteBook Widget)
来源:互联网 发布:wind中国金融数据库 编辑:程序博客网 时间:2024/05/19 03:20
笔记本构件(The NoteBook Widget)
笔记本构件(The NoteBook Widget)是互相重叠的页面集合,每一页都包含不同的信息,且一次只有一个页面是可见的。该构件在GUI(图形用户接口)编程中很常用。要显示大量的相似信息,同时把它们分别显示时,使用这种构件是一个很好的方法。具体看下面的代码
具体代码如下:
- /*File:notebook.c
- *Date:2014-0309
- *Author:sjin
- *Mail:413977243@qq.com
- */
- #include <gtk/gtk.h>
- #include <stdio.h>
- /*这个函数旋转页标签的位置*/
- void rotate_book(GtkButton *button,GtkNotebook *notebook)
- {
- gtk_notebook_set_tab_pos(notebook,(notebook->tab_pos + 1) % 4);
- }
- /*隐藏或显示页标签和边框*/
- void tabsborder_book(GtkButton *button,GtkNotebook *notebook)
- {
- gint tval = FALSE;
- gint bval = FALSE;
- if(notebook->show_tabs == 0){
- tval = TRUE;
- }
- if(notebook->show_border == 0){
- bval = TRUE;
- }
- /*显示或者隐藏页标签*/
- gtk_notebook_set_show_tabs(notebook,tval);
- /*显示或者隐藏边框*/
- gtk_notebook_set_show_border(notebook,bval);
- }
- /*从笔记本构件上删除页面*/
- void remove_book(GtkButton *button,GtkNotebook *notebook)
- {
- gint page;
- page = gtk_notebook_get_current_page(notebook);
- gtk_notebook_remove_page(notebook,page);
- /*********************
- * 必须刷新构件-----这会迫使构件重绘自身*/
- gtk_widget_draw(GTK_WIDGET(notebook),NULL);
- }
- void delete(GtkWidget *widget,GtkWidget *event,gpointer data)
- {
- gtk_main_quit();
- }
- int main(int argc, char*argv[])
- {
- GtkWidget *window;
- GtkWidget *button;
- GtkWidget *table;
- GtkWidget *notebook;
- GtkWidget *frame;
- GtkWidget *label;
- GtkWidget *checkbutton;
- int i;
- char bufferf[32];
- char bufferl[32];
- //初始化GTK
- gtk_init(&argc,&argv);
- //创建最上层主窗口
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- //连接信号"delete_event",使得窗口关闭时发生
- g_signal_connect(G_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete),NULL);
- //设置窗口标题
- gtk_window_set_title(GTK_WINDOW(window),"notebook 练习");
- //设定窗口的默认宽高
- //gtk_window_set_default_size(GTK_WINDOW(window),200,300);
- //设定窗口的位置,让窗口总在最前端
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
- //设定容器边框的宽度
- gtk_container_set_border_width(GTK_CONTAINER(window),20);
- /*表组装,创建表*/
- table = gtk_table_new(3,6,FALSE);
- gtk_container_add(GTK_CONTAINER(window),table);
- /*创建一个笔记本构件,将标签页放在顶部*/
- notebook = gtk_notebook_new();
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook),GTK_POS_TOP);
- gtk_table_attach_defaults(GTK_TABLE(table),notebook,0,6,0,1);
- gtk_widget_show(notebook);
- /*向笔记本构件中插入标签页*/
- for(i = 0; i < 5; i++){
- sprintf(bufferf,"笔记本构件框架 %d",i + 1);
- sprintf(bufferl,"标签页 %d",i + 1);
- frame = gtk_frame_new(bufferf);
- gtk_container_set_border_width(GTK_CONTAINER(frame),10);
- gtk_widget_set_usize(frame,100,75);
- gtk_widget_show(frame);
- label = gtk_label_new(bufferf);
- gtk_container_add(GTK_CONTAINER(frame),label);
- gtk_widget_show(label);
- label = gtk_label_new(bufferl);
- gtk_notebook_prepend_page(GTK_NOTEBOOK(notebook),frame,label);
- }
- /*设置起始页为第四页*/
- gtk_notebook_set_page(GTK_NOTEBOOK(notebook),3);
- /*创建一排按钮*/
- /*关闭*/
- button = gtk_button_new_with_label("关闭");
- gtk_signal_connect_object(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(delete),NULL);
- gtk_table_attach_defaults(GTK_TABLE(table),button,0,1,1,2);
- gtk_widget_show(button);
- /*下一页*/
- button = gtk_button_new_with_label("下一页");
- gtk_signal_connect_object(GTK_OBJECT(button),"clicked",G_CALLBACK(gtk_notebook_next_page),GTK_NOTEBOOK(notebook));
- gtk_table_attach_defaults(GTK_TABLE(table),button,1,2,1,2);
- gtk_widget_show(button);
- /*上一页*/
- button = gtk_button_new_with_label("上一页");
- gtk_signal_connect_object(GTK_OBJECT(button),"clicked",G_CALLBACK(gtk_notebook_prev_page),GTK_NOTEBOOK(notebook));
- gtk_table_attach_defaults(GTK_TABLE(table),button,2,3,1,2);
- gtk_widget_show(button);
- /*标签页位置*/
- button = gtk_button_new_with_label("标签页位置");
- gtk_signal_connect(GTK_OBJECT(button),"clicked",(GtkSignalFunc)rotate_book,GTK_NOTEBOOK(notebook));
- gtk_table_attach_defaults(GTK_TABLE(table),button,3,4,1,2);
- gtk_widget_show(button);
- /*隐藏页标签和边框*/
- button = gtk_button_new_with_label("页标签和边框ON、OFF");
- gtk_signal_connect(GTK_OBJECT(button),"clicked",(GtkSignalFunc)tabsborder_book,GTK_NOTEBOOK(notebook));
- gtk_table_attach_defaults(GTK_TABLE(table),button,4,5,1,2);
- gtk_widget_show(button);
- /*删除*/
- button = gtk_button_new_with_label("删除");
- gtk_signal_connect(GTK_OBJECT(button),"clicked",(GtkSignalFunc)remove_book,GTK_NOTEBOOK(notebook));
- gtk_table_attach_defaults(GTK_TABLE(table),button,5,6,1,2);
- gtk_widget_show(button);
- gtk_widget_show(table);
- gtk_widget_show_all(window);
- gtk_main();
- return FALSE;
- }
0 0
- GTK 笔记本构件(The NoteBook Widget)
- 对齐构件 The Alignment widget@GTK+ 2.0 中文教程连载
- GTK+中笔记本控件(NoteBook)使用说明
- GTK+中笔记本控件(NoteBook)使用说明
- GTK+构件
- GTK+图形化应用程序开发学习笔记(十九)—按钮盒构件、笔记本构件
- GTK+图形化应用程序开发学习笔记(十九)—按钮盒构件、笔记本构件
- The Cairo graphics tutorial -------Custom GTK widget
- GTK+ 构件刷新问题
- GTK构件 tree_view
- 容器构件 Container Widgets 事件盒 The EventBox@GTK+ 2.0 中文教程连载
- GTK编程基础----按钮构件
- GTK+2.0-----容器构件GtkContainer
- GTK 中的 treeview 构件有浅入深
- GTK+中构件的基本概念
- GTK 滚动窗口构件(GtkScrolledWindow)
- GTK 中的 treeview 构件有浅入深
- Linux GTK 笔记本 Notebooks
- Android Handler的使用略
- DSS 搭建手机流媒体服务器(部分转载)
- TCP 中的EAGAIN错误
- POJ2976 Dropping tests 二分搜索
- Nexus 7 (2013) and Win 7 64 - cannot install USB driver
- GTK 笔记本构件(The NoteBook Widget)
- 7-0. 写出这个数 (20)
- Stanford ML - Logistic Regression 逻辑回归
- 比较全的xcode真机调试教程
- 为什么时间很紧还想玩游戏?(李松蔚版)
- 面试总结
- com关于IUnknown接口
- GTK 对话框
- mysql与php