GTK经常使用控件之笔记本控件( GtkNotebook )
笔记本控件,能够让用户标签式地切换多个界面。
当我们须要多窗体切换时,使用笔记本控件是一个明智的选择。
笔记本控件的创建:
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: 下
GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label );
child: 放在笔记本页面里的子控件
tab_label:要加入页面的标题名
GtkNotebook *notebook,GtkWidget *child,GtkWidget *tab_label,gint position );
child: 放在笔记本页面里的子控件
tab_label:要加入页面的标题名
void gtk_notebook_set_current_page(
GtkNotebook *notebook,gint page_num );
#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 )的更多相关文章
- WinForm用户控件、动态创建添加控件、timer控件--2016年12月12日
好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3 0 0 用户控件: 通过布局将多个控件整合为一个控件,根据自己的需要进行修改,可对用户控件内的所有控件及控件属性进行修 ...
- DevExpress控件的GridControl控件小结
DevExpress控件的GridControl控件小结 (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条 ...
- 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地 ...
- winfrom获取用户控件里的控件对象
如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...
- MFC编程入门之二十七(常用控件:图片控件PictureControl)
上一节讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是 ...
- 学习笔记找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID.
解决 找到多个具有相同 ID“_header”的控件,FindControl 要求控件具有唯一的 ID. private void DisplayHotBooks() { //获取 ...
- WPF学习之路(十二)控件(HeaderedContent控件)
GroupBox 用来组织多种控件的常见控件,因为是内容空间,只能直接包含一项,需要使用面板一类的中间空间. Header和Content可以是任意元素 <GroupBox> <Gr ...
- ASP.NET同页面内【用户控件与父页面】以及【用户控件与用户控件】之间方法调用
在用户控件中,获取父页面的方法 1:方法没有参数(userInfor()) string userInfor = Convert.ToString(this.Page.GetType().GetMet ...
- c#winform如何通过控件名查找控件
//根据控件名称查找控件 //作用根据控件的配置项目, Control[] myfindcs = this.Controls.Find("button4", true); if ( ...
随机推荐
- DIV水平 垂直居中CSS
/*实现一.原理:要让div等块级元素水平和垂直居中,必需知道该div等块级元素的宽度和高度,然后设置位置为绝对位置,距离页面窗口左边框和上边框的距离设置为50%,这个50%就是指页面窗口的宽度和高度 ...
- (转)WKT转换工具terraformers
http://blog.csdn.net/gisshixisheng/article/details/53150111 概述: 前面的文章中,提到了Arcgis中实现wkt转换为geometry,但是 ...
- 梦想CAD控件关于id与handle问题
ID和句柄具有各自的特点: (1) ID:在一个任务中,本次任务中都是独一无二的.在不同的任务中,同一个图形对象的ID可能不同. (2) 句柄:在一个任务中,不能保证每个对象的句柄都唯一,但是在一个图 ...
- 观察者模式在Foundation框架通知中的应用
GitHub传送门 1.何为观察者模式? 观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新. 举个简单的例子:你和你的舍友都订阅了 ...
- scala学习(3)-----wordcount【sparksession】
参考: spark中文官方网址:http://spark.apachecn.org/#/ https://www.iteblog.com/archives/1674.html 一.知识点: 1.Dat ...
- 最长上升子序列(动态规划递推,LIS)
1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...
- 洛谷——P2827 蚯蚓
P2827 蚯蚓 题目描述 本题中,我们将用符号 \lfloor c \rfloor⌊c⌋ 表示对 cc 向下取整,例如:\lfloor 3.0 \rfloor = \lfloor 3.1 \rflo ...
- ZOJ - 3983 - Crusaders Quest(思维 + 暴力)
题意: 给出一个字符串,长度为9,包含三种各三个字母"a","g","o",如果一次消除连续三个一样的分数+1,消完自动向左补齐 其中可以消 ...
- 自定义属性Attribute的运用
有时候需要一个枚举类,能够承载更多的信息,于是可以利用attribute这个特性. 首先编写自己业务需求类 [AttributeUsage(AttributeTargets.Field)] publi ...
- 爬虫之Requests库
官方文档:http://cn.python-requests.org/zh_CN/latest/ 一.引子 import requests resp = requests.get("http ...