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 ( ...
随机推荐
- Farseer.net轻量级开源框架 中级篇:执行SQL语句
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: 事务的使用 下一篇:Farseer.net轻量级开源框架 中级篇: DbFacto ...
- context switch
In computing, a context switch is the process of storing and restoring the state (more specifically, ...
- 前端JavaScript入门——JavaScript变量和操作元素
变量JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定. 定义变量需要用关键字 ‘var’: var a = 123; var b = 'asd'; //同时定义多个 ...
- CAD创建组(网页版)
主要用到函数说明: _DMxDrawX::CreateGroup 创建组.如果组名已经存在,就把实体加入组中.详细说明如下: 参数 说明 BSTR pszName 组名.,如果为空,创建匿名组 IDi ...
- CAD如何动态绘制带面积周长的圆?
CAD绘制图像的过程中,画圆的情况是非常常见的,用户可以在控件视区点取任意一点做为圆心,再动态点取半径绘制圆. 主要用到函数说明: _DMxDrawX::DrawCircle 绘制一个圆.详细说明如下 ...
- (C/C++学习)19.单目标遗传算法的C程序实现
说明:在学习生活中,经常会遇到各种各样的最优问题,其中最常见的就是求某个多维(多个自变量)函数在各个自变量各取何值时的最大值或最小值:例如求函数 f(x) = (x-5)2+(y-6)2+(z-7)2 ...
- LinuxMint19.1安装搜狗拼音输入法
Installation 1.到搜狗拼音输入法官网下载Linux版. 2.使用dpkg命令安装deb软件包 $ sudo dpkg -i sogoupinyin_2.2.0.0108_amd.deb ...
- Python面向对象一些阶段性总结
什么时候用面向对象??? 1.共同的方法,提出来.共同的方法可以产生一个连接,其他方法可以使用,例如传文件,和执行命令都需要建立连接,关闭连接 例如 获取连接,...操作..关闭连接 2.创建模板.造 ...
- CCF201612-2 工资计算 java(100分)
试题编号: 201612-2 试题名称: 工资计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假 ...
- Spring MVC_Hello World
[Hello World] 步骤: (1)加入jar包, (2)在web.xml中配置DispatcherServlet, (3)加入Spring MVC的配置文件, (4)编写处理请求的处理器,并标 ...